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

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

Introduction

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

Prototype

public abstract JsonToken getCurrentToken();

Source Link

Document

Accessor to find which token parser currently points to, if any; null will be returned if none.

Usage

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   ww  w  . j a  v a 2  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.adobe.communities.ugc.migration.importer.ForumImportServlet.java

protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response)
        throws ServletException, IOException {

    final ResourceResolver resolver = request.getResourceResolver();

    UGCImportHelper.checkUserPrivileges(resolver, rrf);

    final UGCImportHelper importHelper = new UGCImportHelper();
    importHelper.setForumOperations(forumOperations);
    importHelper.setTallyService(tallyOperationsService);
    // get the forum we'll be adding new topics to
    final String path = request.getRequestParameter("path").getString();
    final Resource resource = request.getResourceResolver().getResource(path);
    if (resource == null) {
        throw new ServletException("Could not find a valid resource for import");
    }/*from w  w  w  . j  av a2  s . c o m*/

    // finally get the uploaded file
    final RequestParameter[] fileRequestParameters = request.getRequestParameters("file");
    if (fileRequestParameters != null && fileRequestParameters.length > 0
            && !fileRequestParameters[0].isFormField()) {

        InputStream inputStream = fileRequestParameters[0].getInputStream();
        JsonParser jsonParser = new JsonFactory().createParser(inputStream);
        jsonParser.nextToken(); // get the first token

        if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
            jsonParser.nextToken();
            if (jsonParser.getCurrentName().equals(ContentTypeDefinitions.LABEL_CONTENT_TYPE)) {
                jsonParser.nextToken();
                final String contentType = jsonParser.getValueAsString();
                if (contentType.equals(getContentType())) {
                    jsonParser.nextToken(); // content
                    if (jsonParser.getCurrentName().equals(ContentTypeDefinitions.LABEL_CONTENT)) {
                        jsonParser.nextToken(); // startObject
                        if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
                            JsonToken token = jsonParser.nextToken(); // social:key
                            try {
                                while (!token.equals(JsonToken.END_OBJECT)) {
                                    importHelper.extractTopic(jsonParser, resource,
                                            resource.getResourceResolver(), getOperationsService());
                                    token = jsonParser.nextToken();
                                }
                            } catch (final IOException e) {
                                throw new ServletException("Encountered an IOException", e);
                            }
                        } else {
                            throw new ServletException("Start object token not found for content");
                        }
                    } else {
                        throw new ServletException("Content not found");
                    }
                } else {
                    throw new ServletException("Expected forum data");
                }
            } else {
                throw new ServletException("Content Type not specified");
            }
        } else {
            throw new ServletException("Invalid Json format");
        }
    }
}

From source file:org.apache.ode.jacob.soup.jackson.ChannelRefDeserializer.java

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

    Object target = null;// w ww . ja va2s  .c  o m

    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String fieldname = jp.getCurrentName();
        if (jp.getCurrentToken() == JsonToken.FIELD_NAME) {
            // if we're not already on the field, advance by one.
            jp.nextToken();
        }

        if ("target".equals(fieldname)) {
            target = jp.readValueAs(Object.class);
        }
    }

    if (target == null) {
        throw ctxt.mappingException(ChannelRef.class);
    }

    return new ChannelRef(target);
}

From source file:ninja.leaping.configurate.json.JSONConfigurationLoader.java

private void parseValue(JsonParser parser, ConfigurationNode node) throws IOException {
    JsonToken token = parser.getCurrentToken();
    switch (token) {
    case START_OBJECT:
        parseObject(parser, node);//from  w  w w  .  j av a 2s .  c om
        break;
    case START_ARRAY:
        parseArray(parser, node);
        break;
    case VALUE_NUMBER_FLOAT:
        node.setValue(parser.getFloatValue());
        break;
    case VALUE_NUMBER_INT:
        node.setValue(parser.getIntValue());
        break;
    case VALUE_STRING:
        node.setValue(parser.getText());
        break;
    case VALUE_TRUE:
    case VALUE_FALSE:
        node.setValue(parser.getBooleanValue());
        break;
    case VALUE_NULL: // Ignored values
    case FIELD_NAME:
        break;
    default:
        throw new IOException("Unsupported token type: " + token + " (at " + parser.getTokenLocation() + ")");
    }
}

From source file:nl.talsmasoftware.enumerables.support.json.jackson2.EnumerableDeserializer.java

/**
 * This operation deserializes the JSON Object as a concrete Enumerable object instance.
 *
 * @param jp   The Jackson parser to obtain the value from.
 * @param ctxt The deserialization context.
 * @return The parsed enumerable object.
 * @throws IOException in case the parser encountered any I/O errors while reading the object.
 *//* ww  w . ja  v a 2 s.c o  m*/
@Override
public Enumerable deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    final Class<? extends Enumerable> type = determineType(jp, ctxt);
    final JsonToken currentToken = jp.getCurrentToken();
    switch (currentToken) {
    case VALUE_NULL:
    case VALUE_STRING:
        return Enumerable.parse(type, jp.getText());
    case START_OBJECT:
        return parseObject(jp, type);
    default:
        throw new IllegalStateException("Could not parse a valid Enumerable object!",
                new IllegalStateException(String.format("Unexpected parser token: \"%s\".", currentToken)));
    }
}

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

@Override
public Object deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    JsonLocation currentLocation = jp.getTokenLocation();
    JsonToken t = jp.getCurrentToken();
    try {//from w  w  w. ja  v  a2 s . c  o  m
        if (t == JsonToken.START_OBJECT) {
            ObjectNode objectNode = jp.readValueAsTree();
            handleDefaultsAndRequiredAndNull(ctxt, objectNode);
            jp = jp.getCodec().treeAsTokens(objectNode);
            jp.nextToken();
        } else if (t == JsonToken.END_OBJECT) {
            // for some reason this is how they chose to handle single field objects
            jp.nextToken();
            ObjectNode objectNode = ctxt.getNodeFactory().objectNode();
            handleDefaultsAndRequiredAndNull(ctxt, objectNode);
            jp = jp.getCodec().treeAsTokens(objectNode);
            jp.nextToken();
        }
        Object value = getDelegatee().deserialize(jp, ctxt);
        if (value instanceof SuperCodable) {
            ((SuperCodable) value).postDecode();
        }
        return value;
    } catch (JsonMappingException ex) {
        throw Jackson.maybeImproveLocation(currentLocation, ex);
    }
}

From source file:org.hyperledger.dropwizard.hocon.HoconDeserializer.java

protected ConfigValue deserializeScalar(JsonParser jp, DeserializationContext ctxt) throws IOException {
    switch (jp.getCurrentToken()) {
    case VALUE_EMBEDDED_OBJECT:
        throw ctxt.mappingException(JsonValue.class);
    case VALUE_FALSE:
        return ConfigValueFactory.fromAnyRef(false);
    case VALUE_TRUE:
        return ConfigValueFactory.fromAnyRef(true);
    case VALUE_NULL:
        return ConfigValueFactory.fromAnyRef(null);
    case VALUE_NUMBER_FLOAT:
    // very cumbersome... but has to be done
    {/*from   ww  w . j av  a  2s  . co  m*/
        if (jp.getNumberType() == JsonParser.NumberType.BIG_DECIMAL) {
            return ConfigValueFactory.fromAnyRef(jp.getDecimalValue());
        }
        return ConfigValueFactory.fromAnyRef(jp.getDoubleValue());
    }
    case VALUE_NUMBER_INT: {
        switch (jp.getNumberType()) {
        case LONG:
            return ConfigValueFactory.fromAnyRef(jp.getLongValue());
        case INT:
            return ConfigValueFactory.fromAnyRef(jp.getIntValue());
        default:
            return ConfigValueFactory.fromAnyRef(jp.getBigIntegerValue());
        }
    }
    case VALUE_STRING:
        return ConfigValueFactory.fromAnyRef(jp.getText());
    default: // errors, should never get here
        //        case END_ARRAY:
        //        case END_OBJECT:
        //        case FIELD_NAME:
        //        case NOT_AVAILABLE:
        //        case START_ARRAY:
        //        case START_OBJECT:
        throw ctxt.mappingException(_valueClass);
    }
}

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

@Override
public LinkedHashMap<String, List<String>> deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    LinkedHashMap<String, List<String>> result = new LinkedHashMap<String, List<String>>();

    // Is the alias broken, i.e., it starts with '['
    if (jp.getCurrentToken().equals(JsonToken.START_ARRAY)) {
        jp.nextToken();/*w ww . j  a v a 2  s . c  om*/
        if (!jp.getCurrentToken().equals(JsonToken.END_ARRAY)) {
            logger.warn("Token " + JsonToken.END_ARRAY + " expected");
        }
    } else {
        ObjectCodec mapper = jp.getCodec();
        result = mapper.readValue(jp, new TypeReference<LinkedHashMap<String, OldAliasList>>() {
        });
    }

    return result;
}