java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.format.DataFormatDetector

public class DataFormatDetector extends Object
Simple helper class that allows data format (content type) auto-detection, given an ordered set of JsonFactory instances to use for actual low-level detection.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final JsonFactory[]
    Ordered list of factories which both represent data formats to detect (in precedence order, starting with highest) and are used for actual detection.
    protected final int
    Maximum number of leading bytes of the input that we can read to determine data format.
    protected final MatchStrength
    Strength of minimal match we accept as the answer, unless better matches are found.
    protected final MatchStrength
    Strength of match we consider to be good enough to be used without checking any other formats.
    static final int
    By default we will look ahead at most 64 bytes; in most cases, much less (4 bytes or so) is needed, but we will allow bit more leniency to support data formats that need more complex heuristics.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
     
  • Method Summary

    Modifier and Type
    Method
    Description
    findFormat(byte[] fullInputData)
    Method to call to find format that given content (full document) has, as per configuration of this detector instance.
    findFormat(byte[] fullInputData, int offset, int len)
    Method to call to find format that given content (full document) has, as per configuration of this detector instance.
    Method to call to find format that content (accessible via given InputStream) given has, as per configuration of this detector instance.
     
    withMaxInputLookahead(int lookaheadBytes)
    Method that will return a detector instance that allows detectors to read up to specified number of bytes when determining format match strength.
    Method that will return a detector instance that uses given minimal match level; match that may be returned unless a stronger match is found with other format detectors.
    Method that will return a detector instance that uses given optimal match level (match that is considered sufficient to return, without trying to find stronger matches with other formats).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • DEFAULT_MAX_INPUT_LOOKAHEAD

      public static final int DEFAULT_MAX_INPUT_LOOKAHEAD
      By default we will look ahead at most 64 bytes; in most cases, much less (4 bytes or so) is needed, but we will allow bit more leniency to support data formats that need more complex heuristics.
      See Also:
    • _detectors

      protected final JsonFactory[] _detectors
      Ordered list of factories which both represent data formats to detect (in precedence order, starting with highest) and are used for actual detection.
    • _optimalMatch

      protected final MatchStrength _optimalMatch
      Strength of match we consider to be good enough to be used without checking any other formats. Default value is MatchStrength.SOLID_MATCH,
    • _minimalMatch

      protected final MatchStrength _minimalMatch
      Strength of minimal match we accept as the answer, unless better matches are found. Default value is MatchStrength.WEAK_MATCH,
    • _maxInputLookahead

      protected final int _maxInputLookahead
      Maximum number of leading bytes of the input that we can read to determine data format.

      Default value is DEFAULT_MAX_INPUT_LOOKAHEAD.

  • Constructor Details

  • Method Details

    • withOptimalMatch

      public DataFormatDetector withOptimalMatch(MatchStrength optMatch)
      Method that will return a detector instance that uses given optimal match level (match that is considered sufficient to return, without trying to find stronger matches with other formats).
      Parameters:
      optMatch - Optimal match level to use
      Returns:
      Format detector instance with specified optimal match level
    • withMinimalMatch

      public DataFormatDetector withMinimalMatch(MatchStrength minMatch)
      Method that will return a detector instance that uses given minimal match level; match that may be returned unless a stronger match is found with other format detectors.
      Parameters:
      minMatch - Minimum match level to use
      Returns:
      Format detector instance with specified minimum match level
    • withMaxInputLookahead

      public DataFormatDetector withMaxInputLookahead(int lookaheadBytes)
      Method that will return a detector instance that allows detectors to read up to specified number of bytes when determining format match strength.
      Parameters:
      lookaheadBytes - Amount of look-ahead allowed
      Returns:
      Format detector instance with specified lookahead settings
    • findFormat

      public DataFormatMatcher findFormat(InputStream in) throws IOException
      Method to call to find format that content (accessible via given InputStream) given has, as per configuration of this detector instance.
      Parameters:
      in - InputStream from which to read initial content
      Returns:
      Matcher object which contains result; never null, even in cases where no match (with specified minimal match strength) is found.
      Throws:
      IOException - for read I/O problems
    • findFormat

      public DataFormatMatcher findFormat(byte[] fullInputData) throws IOException
      Method to call to find format that given content (full document) has, as per configuration of this detector instance.
      Parameters:
      fullInputData - Full contents to use for format detection
      Returns:
      Matcher object which contains result; never null, even in cases where no match (with specified minimal match strength) is found.
      Throws:
      IOException - for read I/O problems
    • findFormat

      public DataFormatMatcher findFormat(byte[] fullInputData, int offset, int len) throws IOException
      Method to call to find format that given content (full document) has, as per configuration of this detector instance.
      Parameters:
      fullInputData - Full contents to use for format detection
      offset - Offset of the first content byte
      len - Length of content
      Returns:
      Matcher object which contains result; never null, even in cases where no match (with specified minimal match strength) is found.
      Throws:
      IOException - for read I/O problems
      Since:
      2.1
    • toString

      public String toString()
      Overrides:
      toString in class Object