Class DataFormatDetector


  • public class DataFormatDetector
    extends java.lang.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
      static 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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      DataFormatMatcher findFormat​(byte[] fullInputData)
      Method to call to find format that given content (full document) has, as per configuration of this detector instance.
      DataFormatMatcher 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.
      DataFormatMatcher findFormat​(java.io.InputStream in)
      Method to call to find format that content (accessible via given InputStream) given has, as per configuration of this detector instance.
      java.lang.String toString()  
      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.
      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.
      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).
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • 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:
        Constant Field Values
    • Constructor Detail

      • DataFormatDetector

        public DataFormatDetector​(JsonFactory... detectors)
      • DataFormatDetector

        public DataFormatDetector​(java.util.Collection<JsonFactory> detectors)
    • Method Detail

      • 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​(java.io.InputStream in)
                                     throws java.io.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:
        java.io.IOException - for read I/O problems
      • findFormat

        public DataFormatMatcher findFormat​(byte[] fullInputData)
                                     throws java.io.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:
        java.io.IOException - for read I/O problems
      • findFormat

        public DataFormatMatcher findFormat​(byte[] fullInputData,
                                            int offset,
                                            int len)
                                     throws java.io.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:
        java.io.IOException - for read I/O problems
        Since:
        2.1
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object