Example usage for com.fasterxml.jackson.core JsonParser getCodec

List of usage examples for com.fasterxml.jackson.core JsonParser getCodec

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonParser getCodec.

Prototype

public abstract ObjectCodec getCodec();

Source Link

Document

Accessor for ObjectCodec associated with this parser, if any.

Usage

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.DataServicesDeserializer.java

@Override
public DataServices deserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final DataServices dataServices = new DataServices();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("DataServiceVersion".equals(jp.getCurrentName())) {
                dataServices.setDataServiceVersion(jp.nextTextValue());
            } else if ("MaxDataServiceVersion".equals(jp.getCurrentName())) {
                dataServices.setMaxDataServiceVersion(jp.nextTextValue());
            } else if ("Schema".equals(jp.getCurrentName())) {
                jp.nextToken();//from w w  w.  j a v a 2s. c  o m
                dataServices.getSchemas().add(jp.getCodec().readValue(jp, Schema.class));
            }
        }
    }

    return dataServices;
}

From source file:de.upb.wdqa.wdvd.datamodel.oldjson.jackson.deserializers.OldJacksonSnakDeserializer.java

@Override
public OldJacksonSnak deserialize(JsonParser p, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    OldJacksonSnak result = null;//from w ww.  j a  v  a2 s  .c o m

    if (!p.getCurrentToken().equals(JsonToken.START_ARRAY)) {
        logger.warn("Token " + JsonToken.START_ARRAY + " expected");
    }

    p.nextToken();
    String type = p.getText();
    p.nextToken();

    // determine type
    if (type.equals("value")) {
        OldJacksonValueSnak valuesnak = new OldJacksonValueSnak();
        valuesnak.setProperty("P" + p.getIntValue());
        p.nextToken();
        valuesnak.setDatatype(p.getText());
        p.nextToken();

        ObjectMapper mapper = (ObjectMapper) p.getCodec();
        JsonNode root = mapper.readTree(p);
        Class<? extends OldJacksonValue> valueClass = getValueClass(valuesnak.getDatatype());
        if (valueClass != null) {
            valuesnak.setDatavalue(mapper.treeToValue(root, valueClass));
        }

        p.nextToken();

        result = valuesnak;
    } else if (type.equals("novalue")) {
        result = new OldJacksonNoValueSnak();
        result.setProperty("P" + p.getIntValue());
        p.nextToken();
    } else if (type.equals("somevalue")) {
        result = new OldJacksonSomeValueSnak();
        result.setProperty("P" + p.getIntValue());
        p.nextToken();
    } else {
        logger.warn("Unknown value type: " + type);
    }

    if (!p.getCurrentToken().equals(JsonToken.END_ARRAY)) {
        logger.warn("Token " + JsonToken.END_ARRAY + " expected");
    }

    return result;
}

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.v4.ActionDeserializer.java

@Override
protected Action doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final Action action = new Action();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                action.setName(jp.nextTextValue());
            } else if ("IsBound".equals(jp.getCurrentName())) {
                action.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("EntitySetPath".equals(jp.getCurrentName())) {
                action.setEntitySetPath(jp.nextTextValue());
            } else if ("Parameter".equals(jp.getCurrentName())) {
                jp.nextToken();//  w ww .  j  ava  2  s  .  c  om
                action.getParameters().add(jp.getCodec().readValue(jp, Parameter.class));
            } else if ("ReturnType".equals(jp.getCurrentName())) {
                action.setReturnType(parseReturnType(jp, "Action"));
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                action.setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return action;
}

From source file:com.addthis.bundle.value.ValueDeserializer.java

@Override
public ValueObject deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    JsonToken t = jp.getCurrentToken();//  w  ww  .j  a v a 2  s .  c o  m
    switch (t) {
    case VALUE_TRUE:
    case VALUE_FALSE:
    case VALUE_STRING:
        return jp.readValueAs(ValueString.class);
    case VALUE_NUMBER_INT:
        return jp.readValueAs(ValueLong.class);
    case VALUE_NUMBER_FLOAT:
        return jp.readValueAs(ValueDouble.class);
    case START_ARRAY:
        return jp.readValueAs(ValueArray.class);
    case START_OBJECT:
    case FIELD_NAME:
        return jp.readValueAs(ValueMap.class);
    case END_OBJECT:
        // calling jp.readValueAs here will return null rather than an empty map, so make empty map in tokens
        jp.nextToken();
        ObjectNode objectNode = ctxt.getNodeFactory().objectNode();
        JsonParser emptyObjectParser = jp.getCodec().treeAsTokens(objectNode);
        emptyObjectParser.nextToken();
        return emptyObjectParser.readValueAs(ValueMap.class);
    case VALUE_EMBEDDED_OBJECT:
    default:
        throw ctxt.mappingException(handledType());
    }
}

From source file:eu.europa.ec.fisheries.uvms.reporting.service.util.ReportDeserializer.java

private void addGroupCriteria(JsonNode groupBy, List<FilterDTO> filterDTOList, Long reportId, JsonParser jp) {

    if (groupBy != null) {
        List list = IteratorUtils.toList(groupBy.elements());
        for (int i = 0; i < list.size(); i++) {
            String code = ((JsonNode) list.get(i)).get("code").asText();
            JsonNode valueNode = ((JsonNode) list.get(i)).get("values");
            List<GroupCriteriaType> groupCriteriaList = null;
            if (valueNode != null) {
                List<String> strings = ((ObjectMapper) jp.getCodec()).convertValue(valueNode, List.class);
                groupCriteriaList = GroupCriteriaFilterMapper.INSTANCE
                        .mapGroupCriteriaTypeListToStringList(strings);
            }/*from w w  w  .java  2 s  .c  om*/
            filterDTOList.add(new CriteriaFilterDTO(code, groupCriteriaList, i + 1, reportId));
        }
    }
}

From source file:org.springframework.social.weibo.api.impl.json.TrendsDeserializer.java

@Override
public SortedSet<Trends> deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    SimpleDateFormat dateFormat = new SimpleDateFormat();
    TreeSet<Trends> result = new TreeSet<Trends>(comparator);
    TreeNode treeNode = jp.readValueAsTree();

    Iterator<String> fieldNames = treeNode.fieldNames();

    while (fieldNames.hasNext()) {
        Trends trends = new Trends();
        try {//www . j  ava  2s  .  c  o m
            String filedName = fieldNames.next();
            dateFormat.applyPattern(retrieveDateFormatPattern(filedName));
            trends.setDate(dateFormat.parse(filedName));
            TreeNode trendsNode = treeNode.get(filedName);
            if (trendsNode.isArray()) {
                for (int i = 0; i < trendsNode.size(); i++) {
                    JsonParser nodeParser = trendsNode.get(i).traverse();
                    nodeParser.setCodec(jp.getCodec());
                    Trend readValueAs = nodeParser.readValueAs(Trend.class);
                    trends.getTrends().add(readValueAs);
                }
            }
            result.add(trends);
        } catch (ParseException e) {
            logger.warn("Unable to parse date", e);
        }
    }

    return result;
}

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.v4.FunctionDeserializer.java

@Override
protected Function doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final Function function = new Function();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                function.setName(jp.nextTextValue());
            } else if ("IsBound".equals(jp.getCurrentName())) {
                function.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("IsComposable".equals(jp.getCurrentName())) {
                function.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("EntitySetPath".equals(jp.getCurrentName())) {
                function.setEntitySetPath(jp.nextTextValue());
            } else if ("Parameter".equals(jp.getCurrentName())) {
                jp.nextToken();//w w  w.  ja  v a 2  s.co m
                function.getParameters().add(jp.getCodec().readValue(jp, Parameter.class));
            } else if ("ReturnType".equals(jp.getCurrentName())) {
                function.setReturnType(parseReturnType(jp, "Function"));
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                function.setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return function;
}

From source file:com.addthis.codec.jackson.CodecTypeDeserializer.java

@Override
public Object deserializeTypedFromAny(JsonParser jp, DeserializationContext ctxt) throws IOException {
    // a jackson thing we might as well include
    if (jp.canReadTypeId()) {
        Object typeId = jp.getTypeId();
        if (typeId != null) {
            return _deserializeWithNativeTypeId(jp, ctxt, typeId);
        }//from  ww  w.  j  av a  2s .c o m
    }
    // can use this to approximate error location if a sub-method throws an exception
    JsonLocation currentLocation = jp.getTokenLocation();
    JsonNode jsonNode;
    // empty objects can appear with END_OBJECT. that has special handling lots of places, but not in readTree
    if (jp.getCurrentToken() == JsonToken.END_OBJECT) {
        jsonNode = ctxt.getNodeFactory().objectNode();
    } else {
        jsonNode = jp.readValueAsTree();
    }
    ObjectCodec objectCodec = jp.getCodec();

    try {
        Object bean = null;
        // _array handler
        if (jsonNode.isArray()) {
            bean = _deserializeTypedFromArray((ArrayNode) jsonNode, objectCodec, ctxt);
            // object handler
        } else if (jsonNode.isObject()) {
            bean = _deserializeTypedFromObject((ObjectNode) jsonNode, objectCodec, ctxt);
        }
        if (bean != null) {
            return bean;
        } else {
            // Jackson 2.6+ throws NPE on null typeId parameter (underlying Map changed from HashMap
            // to ConcurrentHashMap), so use empty string instead of null
            JsonDeserializer<Object> deser = _findDeserializer(ctxt, "");
            JsonParser treeParser = jp.getCodec().treeAsTokens(jsonNode);
            treeParser.nextToken();
            return deser.deserialize(treeParser, ctxt);
        }
    } catch (JsonMappingException ex) {
        throw Jackson.maybeImproveLocation(currentLocation, ex);
    }
}