Example usage for com.fasterxml.jackson.databind DeserializationContext wrongTokenException

List of usage examples for com.fasterxml.jackson.databind DeserializationContext wrongTokenException

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind DeserializationContext wrongTokenException.

Prototype

public JsonMappingException wrongTokenException(JsonParser paramJsonParser, JsonToken paramJsonToken,
            String paramString) 

Source Link

Usage

From source file:com.nesscomputing.jackson.datatype.CommonsLang3Module.java

private static void expect(JsonToken actual, JsonToken expected, JsonParser jp, DeserializationContext ctxt)
        throws JsonMappingException {
    if (actual != expected) {
        throw ctxt.wrongTokenException(jp, expected, "Wrong token");
    }//from w ww. ja va 2  s. c  o  m
}

From source file:com.basistech.rosette.dm.jackson.VersionCheckDeserializer.java

@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    if (p.getCurrentToken() != JsonToken.VALUE_STRING) {
        throw ctxt.wrongTokenException(p, JsonToken.VALUE_STRING, "The value of 'version' must be a string");
    }/*w  w  w . ja v  a  2s  .  c  o m*/
    String version = p.readValueAs(String.class);
    String[] bits = version.split("\\.");
    if (bits.length < 3) { // allow for a fourth digit for some reason some day.
        throw ctxt.weirdStringException(version, String.class, "Versions must be of the form x.y.z");
    }
    if (!"1".equals(bits[0])) {
        throw ctxt.weirdStringException(version, String.class,
                String.format("Incompatible ADM version %s", version));
    }
    return version;
}

From source file:com.basistech.rosette.dm.jackson.array.MorphoAnalysisListArrayDeserializer.java

@Override
public List<MorphoAnalysis> deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    if (jp.getCurrentToken() != JsonToken.START_ARRAY) {
        throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "Expected array of items");
    }/*  w  w  w .j a v  a 2 s  .c  o  m*/
    List<MorphoAnalysis> results = Lists.newArrayList();
    MorphoAnalysisTypes type = MorphoAnalysisTypes.PLAIN;
    while (jp.nextToken() != JsonToken.END_ARRAY) {
        if (jp.getCurrentToken() == JsonToken.VALUE_NUMBER_INT) {
            type = MorphoAnalysisTypes.byOrdinal(jp.getIntValue());
            jp.nextToken();
        }
        results.add(jp.readValueAs(type.getMorphoAnalysisClass()));
    }
    return ImmutableList.copyOf(results);
}

From source file:com.spotify.ffwd.filter.FilterDeserializer.java

@Override
public Filter deserialize(JsonParser p, DeserializationContext ctx)
        throws IOException, JsonProcessingException {
    if (p.getCurrentToken() != JsonToken.START_ARRAY) {
        throw ctx.wrongTokenException(p, JsonToken.START_ARRAY, null);
    }/*from  w w  w  .ja  v  a 2s  .co  m*/

    final String id = p.nextTextValue();

    final PartialDeserializer d = suppliers.get(id);

    if (d == null) {
        throw ctx.weirdStringException(id, Filter.class,
                String.format("Expected one of %s", suppliers.keySet()));
    }

    final Filter instance = d.deserialize(p, ctx);

    if (p.getCurrentToken() != JsonToken.END_ARRAY) {
        throw ctx.wrongTokenException(p, JsonToken.END_ARRAY, null);
    }

    return instance;
}

From source file:javaslang.jackson.datatype.deserialize.CharSeqDeserializer.java

@Override
public CharSeq deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    Object obj = deserializer.deserialize(p, ctxt);
    if (obj instanceof String) {
        return CharSeq.of((String) obj);
    } else {//from  w  ww .ja  v  a 2  s . co m
        throw ctxt.wrongTokenException(p, JsonToken.VALUE_STRING,
                "CharSeq can only be deserialized from String");
    }
}

From source file:org.dbrain.data.jackson.serializers.JacksonSerializationUtils.java

public static Value parseValue(JsonParser parser, DeserializationContext ctxt) throws IOException {
    JsonToken token = getToken(parser);/* w ww  .  j a  va 2 s  . c  om*/
    if (token != null) {
        Value result;
        switch (token) {
        case VALUE_STRING:
            result = Value.of(parser.getValueAsString());
            break;
        case VALUE_NUMBER_FLOAT:
            result = Value.of(parser.getDoubleValue());
            break;
        case VALUE_NUMBER_INT:
            result = Value.of(parser.getBigIntegerValue());
            break;
        case VALUE_NULL:
            result = NullValueImpl.NULL;
            break;
        case VALUE_TRUE:
            result = Value.of(Boolean.TRUE);
            break;
        case VALUE_FALSE:
            result = Value.of(Boolean.FALSE);
            break;
        case START_OBJECT: {
            ValueMap values = ValueMap.newInstance();
            while (parser.nextToken() == JsonToken.FIELD_NAME) {
                String key = parser.getCurrentName();
                parser.nextToken();
                Value v = parseValue(parser, ctxt);
                if (v == null) {
                    throw ctxt.wrongTokenException(parser, JsonToken.START_OBJECT, "Expected Value");
                }
                values.put(key, v);
            }
            if (getToken(parser) == JsonToken.END_OBJECT) {
                parser.clearCurrentToken();
            } else {
                throw ctxt.wrongTokenException(parser, JsonToken.END_OBJECT, null);
            }
            result = values;
        }
            break;
        case START_ARRAY: {
            ValueList values = ValueList.newInstance();
            while (parser.nextToken() != JsonToken.END_ARRAY) {
                Value v = parseValue(parser, ctxt);
                if (v == null) {
                    throw ctxt.wrongTokenException(parser, JsonToken.START_OBJECT, "Expected Value");
                }
                values.add(v);
            }
            if (getToken(parser) == JsonToken.END_ARRAY) {
                parser.clearCurrentToken();
            } else {
                throw ctxt.wrongTokenException(parser, JsonToken.END_ARRAY, null);
            }
            result = values;
        }
            break;
        default:
            throw ctxt.wrongTokenException(parser, JsonToken.START_OBJECT, "Expected Value");
        }
        return result;
    } else {
        return null;
    }
}

From source file:com.basistech.rosette.dm.jackson.array.ListAttributeArrayDeserializer.java

@Override
@SuppressWarnings("unchecked")
public ListAttribute deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    if (jp.getCurrentToken() == JsonToken.START_ARRAY) { // this is what we expect.
        // we advance to be in the same place the 'else' will be -- the first FIELD_NAME.
        jp.nextToken();/* w  w w . ja  v  a2 s . c o m*/
    } else {
        throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY,
                "ListAttributeDeserializer called not array start.");
    }

    if (jp.getCurrentToken() != JsonToken.VALUE_STRING) {
        throw ctxt.mappingException("Expected VALUE_STRING for item type.");
    }
    String itemTypeKeyName = jp.getText();

    KnownAttribute attribute = KnownAttribute.getAttributeForKey(itemTypeKeyName);
    if (attribute == null) {
        attribute = KnownAttribute.UNKNOWN;
    }
    Class<? extends BaseAttribute> itemClass = attribute.attributeClass();

    ListAttribute.Builder<BaseAttribute> builder = new ListAttribute.Builder<>(attribute.attributeClass());
    List<BaseAttribute> items = Lists.newArrayList();

    if (jp.nextToken() != JsonToken.START_ARRAY) {
        throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "No array of values for list.");
    }

    // we just read the elements as we see them,
    while (jp.nextToken() != JsonToken.END_ARRAY) {
        // the START_ARRAY case, which is _normal_. Read the elements.
        items.add(jp.readValueAs(itemClass));
    }
    builder.setItems(items);
    // we are still in the top-level array ...
    if (jp.nextToken() != JsonToken.START_OBJECT) {
        throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT, "No extended properties for list.");
    }
    Map<String, Object> props = jp.readValueAs(new TypeReference<Map<String, Object>>() {
    });
    for (Map.Entry<String, Object> me : props.entrySet()) {
        builder.extendedProperty(me.getKey(), me.getValue());
    }
    jp.nextToken(); // consume the END_OBJECT of the extended props
    return builder.build();
}

From source file:com.spotify.docker.client.jackson.UnixTimestampDeserializer.java

@Override
public Date deserialize(final JsonParser parser, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    final JsonToken token = parser.getCurrentToken();
    if (token == JsonToken.VALUE_STRING) {
        final String str = parser.getText().trim();
        return toDate(Long.parseLong(str));
    } else if (token == JsonToken.VALUE_NUMBER_INT) {
        return toDate(parser.getLongValue());
    }//from ww  w .j  a  v a2  s.c  om
    throw ctxt.wrongTokenException(parser, JsonToken.VALUE_STRING, "Expected a string or numeric value");
}

From source file:webby.commons.io.jackson.OffsetDateTimeDeserializer.java

@Override
public OffsetDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {
    switch (parser.getCurrentToken()) {
    case VALUE_STRING:
        String string = parser.getText().trim();
        if (prepareFn != null)
            string = prepareFn.apply(string);
        if (string == null || string.length() == 0)
            return null;
        return OffsetDateTime.parse(string, formatter);
    }//  ww  w . j  ava 2s . c  o m

    throw context.wrongTokenException(parser, JsonToken.START_ARRAY, "Expected array or string.");
}

From source file:com.basistech.rosette.dm.jackson.ListAttributeDeserializer.java

@Override
@SuppressWarnings("unchecked")
public ListAttribute deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    if (jp.getCurrentToken() == JsonToken.START_OBJECT) { // this is what we expect.
        // we advance to be in the same place the 'else' will be -- the first FIELD_NAME.
        jp.nextToken();/*from  www .  j  ava2s  .  c om*/
    } else {
        /* In a full AnnotatedText, which is already doing some polymorphism shuffling, we end up here. */
        /* We find a FIELD_NAME for the first field of the object */
        if (jp.getCurrentToken() != JsonToken.FIELD_NAME) {
            throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT,
                    "ListAttributeDeserializer called not at or FIELD_NAME of first field");
        }
        /* We are at the field name, ready for the loop. */
    }
    TokenBuffer tb = null;
    for (JsonToken t = jp.getCurrentToken(); t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
        String name = jp.getCurrentName();
        if ("itemType".equals(name)) { // gotcha!
            return deserialize(jp, ctxt, tb);
        }
        if (tb == null) {
            tb = new TokenBuffer(null, false);
        }
        tb.copyCurrentStructure(jp);
    }
    throw ctxt.mappingException("No itemType provided in a list");
}