com.fasterxml.jackson.core.format.InputAccessor Java Examples

The following examples show how to use com.fasterxml.jackson.core.format.InputAccessor. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MappingJsonFactory.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Sub-classes need to override this method
 */
@Override
public MatchStrength hasFormat(InputAccessor acc) throws IOException
{
    if (getClass() == MappingJsonFactory.class) {
        return hasJSONFormat(acc);
    }
    return null;
}
 
Example #2
Source File: ByteSourceJsonBootstrapper.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
private static MatchStrength tryMatch(InputAccessor acc, String matchStr, MatchStrength fullMatchStrength)
    throws IOException
{
    for (int i = 0, len = matchStr.length(); i < len; ++i) {
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != matchStr.charAt(i)) {
            return MatchStrength.NO_MATCH;
        }
    }
    return fullMatchStrength;
}
 
Example #3
Source File: ByteSourceJsonBootstrapper.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
private static int skipSpace(InputAccessor acc) throws IOException
{
    if (!acc.hasMoreBytes()) {
        return -1;
    }
    return skipSpace(acc, acc.nextByte());
}
 
Example #4
Source File: ByteSourceJsonBootstrapper.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
private static int skipSpace(InputAccessor acc, byte b) throws IOException
{
    while (true) {
        int ch = (int) b & 0xFF;
        if (!(ch == ' ' || ch == '\r' || ch == '\n' || ch == '\t')) {
            return ch;
        }
        if (!acc.hasMoreBytes()) {
            return -1;
        }
        b = acc.nextByte();
    }
}
 
Example #5
Source File: JsonFactory.java    From lams with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Convenience method for trying to determine whether input via given accessor
 * is of format type supported by this factory.
 */
public MatchStrength hasFormat(InputAccessor acc) throws IOException
{
    // since we can't keep this abstract, only implement for "vanilla" instance
    if (getClass() == JsonFactory.class) {
        return hasJSONFormat(acc);
    }
    return null;
}
 
Example #6
Source File: ByteSourceJsonBootstrapper.java    From openbd-core with GNU General Public License v3.0 5 votes vote down vote up
private static MatchStrength tryMatch(InputAccessor acc, String matchStr, MatchStrength fullMatchStrength)
    throws IOException
{
    for (int i = 0, len = matchStr.length(); i < len; ++i) {
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != matchStr.charAt(i)) {
            return MatchStrength.NO_MATCH;
        }
    }
    return fullMatchStrength;
}
 
Example #7
Source File: ByteSourceJsonBootstrapper.java    From openbd-core with GNU General Public License v3.0 5 votes vote down vote up
private static int skipSpace(InputAccessor acc) throws IOException
{
    if (!acc.hasMoreBytes()) {
        return -1;
    }
    return skipSpace(acc, acc.nextByte());
}
 
Example #8
Source File: ByteSourceJsonBootstrapper.java    From openbd-core with GNU General Public License v3.0 5 votes vote down vote up
private static int skipSpace(InputAccessor acc, byte b) throws IOException
{
    while (true) {
        int ch = (int) b & 0xFF;
        if (!(ch == ' ' || ch == '\r' || ch == '\n' || ch == '\t')) {
            return ch;
        }
        if (!acc.hasMoreBytes()) {
            return -1;
        }
        b = acc.nextByte();
        ch = (int) b & 0xFF;
    }
}
 
Example #9
Source File: JsonFactory.java    From openbd-core with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Convenience method for trying to determine whether input via given accessor
 * is of format type supported by this factory.
 */
public MatchStrength hasFormat(InputAccessor acc) throws IOException
{
    // since we can't keep this abstract, only implement for "vanilla" instance
    if (getClass() == JsonFactory.class) {
        return hasJSONFormat(acc);
    }
    return null;
}
 
Example #10
Source File: MincodeFactory.java    From divolte-collector with Apache License 2.0 5 votes vote down vote up
@Override
public MatchStrength hasFormat(final InputAccessor acc) throws IOException {
    final MatchStrength matchStrength;
    if (acc.hasMoreBytes()) {
        final byte b = acc.nextByte();
        // First byte has to be one of the record types, possibly capital denoting a root object.
        // (Only '.' cannot appear at the start of Mincode.)
        switch (b) {
            case '(':
            case 'a':
            case 's':
            case 't':
            case 'f':
            case 'n':
            case 'd':
            case 'j':
                matchStrength = MatchStrength.SOLID_MATCH;
                break;
            default:
                matchStrength = MatchStrength.NO_MATCH;
        }
    } else {
        // Zero-length isn't supported.
        matchStrength = MatchStrength.NO_MATCH;
    }
    return matchStrength;
}
 
Example #11
Source File: HoconFactory.java    From jackson-dataformat-hocon with Apache License 2.0 5 votes vote down vote up
/**
 * Sub-classes need to override this method (as of 1.8)
 */
@Override
public MatchStrength hasFormat(InputAccessor acc) throws IOException
{
    if (!acc.hasMoreBytes()) {
        return MatchStrength.INCONCLUSIVE;
    }
    byte b = acc.nextByte();
    // Very first thing, a UTF-8 BOM?
    if (b == UTF8_BOM_1) { // yes, looks like UTF-8 BOM
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_2) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_3) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        b = acc.nextByte();
    }
    if (b == '{' || Character.isLetter((char) b) || Character.isDigit((char) b)) {
        return MatchStrength.WEAK_MATCH;
    }
    return MatchStrength.INCONCLUSIVE;
}
 
Example #12
Source File: ByteSourceJsonBootstrapper.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Current implementation is not as thorough as other functionality
 * ({@link com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper}); 
 * supports UTF-8, for example. But it should work, for now, and can
 * be improved as necessary.
 */
public static MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
{
    // Ideally we should see "[" or "{"; but if not, we'll accept double-quote (String)
    // in future could also consider accepting non-standard matches?
    
    if (!acc.hasMoreBytes()) {
        return MatchStrength.INCONCLUSIVE;
    }
    byte b = acc.nextByte();
    // Very first thing, a UTF-8 BOM?
    if (b == UTF8_BOM_1) { // yes, looks like UTF-8 BOM
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_2) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_3) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        b = acc.nextByte();
    }
    // Then possible leading space
    int ch = skipSpace(acc, b);
    if (ch < 0) {
        return MatchStrength.INCONCLUSIVE;
    }
    // First, let's see if it looks like a structured type:
    if (ch == '{') { // JSON object?
        // Ideally we need to find either double-quote or closing bracket
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (ch == '"' || ch == '}') {
            return MatchStrength.SOLID_MATCH;
        }
        // ... should we allow non-standard? Let's not yet... can add if need be
        return MatchStrength.NO_MATCH;
    }
    MatchStrength strength;
    
    if (ch == '[') {
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        // closing brackets is easy; but for now, let's also accept opening...
        if (ch == ']' || ch == '[') {
            return MatchStrength.SOLID_MATCH;
        }
        return MatchStrength.SOLID_MATCH;
    } else {
        // plain old value is not very convincing...
        strength = MatchStrength.WEAK_MATCH;
    }

    if (ch == '"') { // string value
        return strength;
    }
    if (ch <= '9' && ch >= '0') { // number
        return strength;
    }
    if (ch == '-') { // negative number
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        return (ch <= '9' && ch >= '0') ? strength : MatchStrength.NO_MATCH;
    }
    // or one of literals
    if (ch == 'n') { // null
        return tryMatch(acc, "ull", strength);
    }
    if (ch == 't') { // true
        return tryMatch(acc, "rue", strength);
    }
    if (ch == 'f') { // false
        return tryMatch(acc, "alse", strength);
    }
    return MatchStrength.NO_MATCH;
}
 
Example #13
Source File: JsonFactory.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Helper method that can be called to determine if content accessed
 * using given accessor seems to be JSON content.
 */
protected MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
{
    return ByteSourceJsonBootstrapper.hasJSONFormat(acc);
}
 
Example #14
Source File: ByteSourceJsonBootstrapper.java    From openbd-core with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Current implementation is not as thorough as other functionality
 * ({@link com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper}); 
 * supports UTF-8, for example. But it should work, for now, and can
 * be improved as necessary.
 */
public static MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
{
    // Ideally we should see "[" or "{"; but if not, we'll accept double-quote (String)
    // in future could also consider accepting non-standard matches?
    
    if (!acc.hasMoreBytes()) {
        return MatchStrength.INCONCLUSIVE;
    }
    byte b = acc.nextByte();
    // Very first thing, a UTF-8 BOM?
    if (b == UTF8_BOM_1) { // yes, looks like UTF-8 BOM
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_2) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (acc.nextByte() != UTF8_BOM_3) {
            return MatchStrength.NO_MATCH;
        }
        if (!acc.hasMoreBytes()) {
            return MatchStrength.INCONCLUSIVE;
        }
        b = acc.nextByte();
    }
    // Then possible leading space
    int ch = skipSpace(acc, b);
    if (ch < 0) {
        return MatchStrength.INCONCLUSIVE;
    }
    // First, let's see if it looks like a structured type:
    if (ch == '{') { // JSON object?
        // Ideally we need to find either double-quote or closing bracket
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        if (ch == '"' || ch == '}') {
            return MatchStrength.SOLID_MATCH;
        }
        // ... should we allow non-standard? Let's not yet... can add if need be
        return MatchStrength.NO_MATCH;
    }
    MatchStrength strength;
    
    if (ch == '[') {
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        // closing brackets is easy; but for now, let's also accept opening...
        if (ch == ']' || ch == '[') {
            return MatchStrength.SOLID_MATCH;
        }
        return MatchStrength.SOLID_MATCH;
    } else {
        // plain old value is not very convincing...
        strength = MatchStrength.WEAK_MATCH;
    }

    if (ch == '"') { // string value
        return strength;
    }
    if (ch <= '9' && ch >= '0') { // number
        return strength;
    }
    if (ch == '-') { // negative number
        ch = skipSpace(acc);
        if (ch < 0) {
            return MatchStrength.INCONCLUSIVE;
        }
        return (ch <= '9' && ch >= '0') ? strength : MatchStrength.NO_MATCH;
    }
    // or one of literals
    if (ch == 'n') { // null
        return tryMatch(acc, "ull", strength);
    }
    if (ch == 't') { // true
        return tryMatch(acc, "rue", strength);
    }
    if (ch == 'f') { // false
        return tryMatch(acc, "alse", strength);
    }
    return MatchStrength.NO_MATCH;
}
 
Example #15
Source File: JsonFactory.java    From openbd-core with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Helper method that can be called to determine if content accessed
 * using given accessor seems to be JSON content.
 */
protected MatchStrength hasJSONFormat(InputAccessor acc) throws IOException
{
    return ByteSourceJsonBootstrapper.hasJSONFormat(acc);
}