Package com.fasterxml.jackson.core.format

# Class DataFormatDetector

java.lang.Object
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[]`
`_detectors`
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`
`_maxInputLookahead`
Maximum number of leading bytes of the input that we can read to determine data format.
`protected final MatchStrength`
`_minimalMatch`
Strength of minimal match we accept as the answer, unless better matches are found.
`protected final MatchStrength`
`_optimalMatch`
Strength of match we consider to be good enough to be used without checking any other formats.
`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.

## Constructor Summary

Constructors
Constructor
Description
`DataFormatDetector(JsonFactory... detectors)`
`DataFormatDetector(Collection<JsonFactory> detectors)`

## Method Summary

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(InputStream in)`
Method to call to find format that content (accessible via given `InputStream`) given has, as per configuration of this detector instance.
`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

`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:
  - Constant Field Values

### _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

### DataFormatDetector

public DataFormatDetector(JsonFactory... detectors)

### DataFormatDetector

public DataFormatDetector(Collection<JsonFactory> detectors)

## 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`