java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper

public final class ByteSourceJsonBootstrapper extends Object
This class is used to determine the encoding of byte stream that is to contain JSON content. Rules are fairly simple, and defined in JSON specification (RFC-4627 or newer), except for BOM handling, which is a property of underlying streams.
  • Field Details

  • Constructor Details

    • ByteSourceJsonBootstrapper

      public ByteSourceJsonBootstrapper(IOContext ctxt, InputStream in)
    • ByteSourceJsonBootstrapper

      public ByteSourceJsonBootstrapper(IOContext ctxt, byte[] inputBuffer, int inputStart, int inputLen)
  • Method Details

    • detectEncoding

      public JsonEncoding detectEncoding() throws IOException
      Method that should be called after constructing an instace. It will figure out encoding that content uses, to allow for instantiating a proper scanner object.
      Returns:
      JsonEncoding detected, if any; JsonEncoding.UTF8 otherwise
      Throws:
      IOException - If read from underlying input source fails
    • skipUTF8BOM

      public static int skipUTF8BOM(DataInput input) throws IOException
      Helper method that may be called to see if given DataInput has BOM marker, and if so, to skip it.
      Parameters:
      input - DataInput to read content from
      Returns:
      Byte (as unsigned int) read after possible UTF-8 BOM
      Throws:
      IOException - If read from underlying input source fails
      Since:
      2.8
    • constructReader

      public Reader constructReader() throws IOException
      Throws:
      IOException
    • constructParser

      public JsonParser constructParser(int parserFeatures, ObjectCodec codec, ByteQuadsCanonicalizer rootByteSymbols, CharsToNameCanonicalizer rootCharSymbols, int factoryFeatures) throws IOException
      Throws:
      IOException
    • hasJSONFormat

      public static MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
      Current implementation is not as thorough as other functionality (ByteSourceJsonBootstrapper); supports UTF-8, for example. But it should work, for now, and can be improved as necessary.
      Parameters:
      acc - InputAccessor to use for accessing content to check
      Returns:
      Strength of match (never null)
      Throws:
      IOException - if input access fails due to read problem
    • ensureLoaded

      protected boolean ensureLoaded(int minimum) throws IOException
      Throws:
      IOException