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:org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService.java

/**
 * Decode a JSON string into the {@link CouchbaseStorable} structure.
 *
 * @param source the source formatted document.
 * @param target the target of the populated data.
 *
 * @return the decoded structure.//  w w w. jav a 2s .c o  m
 */
@Override
public final CouchbaseStorable decode(final Object source, final CouchbaseStorable target) {
    try {
        JsonParser parser = factory.createParser((String) source);
        while (parser.nextToken() != null) {
            JsonToken currentToken = parser.getCurrentToken();

            if (currentToken == JsonToken.START_OBJECT) {
                return decodeObject(parser, (CouchbaseDocument) target);
            } else if (currentToken == JsonToken.START_ARRAY) {
                return decodeArray(parser, new CouchbaseList());
            } else {
                throw new MappingException("JSON to decode needs to start as array or object!");
            }
        }
        parser.close();
    } catch (IOException ex) {
        throw new RuntimeException("Could not decode JSON", ex);
    }
    return target;
}

From source file:no.ssb.jsonstat.v2.deser.DimensionDeserializer.java

@Override
public Dimension.Builder deserialize(JsonParser p, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    // Get the name first.
    String name = parseName(p, ctxt);

    if (p.getCurrentToken() == JsonToken.START_OBJECT) {
        p.nextToken();//from  ww  w  .  j a va 2s.com
    }

    Dimension.Builder dimension;
    dimension = Dimension.create(name);

    while (p.nextValue() != JsonToken.END_OBJECT) {
        switch (p.getCurrentName()) {
        case "category":
            parseCategory(dimension, p, ctxt);
            break;
        case "label":
            dimension.withLabel(parseLabel(p, ctxt));
            break;
        default:
            ctxt.handleUnknownProperty(p, this, Dimension.Builder.class, p.getCurrentName());
            break;
        }
    }

    return dimension;
}

From source file:no.ssb.jsonstat.v2.deser.DatasetDeserializer.java

@Override
public DatasetBuildable deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    if (p.getCurrentToken() == JsonToken.START_OBJECT) {
        p.nextToken();/*from w  w  w. ja v  a2s  . c o  m*/
    }

    Set<String> ids = Collections.emptySet();
    List<Integer> sizes = Collections.emptyList();
    Multimap<String, String> roles = ArrayListMultimap.create();
    Map<String, Dimension.Builder> dims = Collections.emptyMap();
    List<Number> values = Collections.emptyList();

    DatasetBuilder builder = Dataset.create();
    Optional<String> version = Optional.empty();
    Optional<String> clazz = Optional.empty();
    Optional<ObjectNode> extension = Optional.empty();

    while (p.nextValue() != JsonToken.END_OBJECT) {
        switch (p.getCurrentName()) {
        case "label":
            builder.withLabel(_parseString(p, ctxt));
            break;
        case "source":
            builder.withSource(_parseString(p, ctxt));
            break;
        case "href":
            break;
        case "updated":
            Instant updated = parseEcmaDate(_parseString(p, ctxt));
            builder.updatedAt(updated);
            break;
        case "value":
            values = parseValues(p, ctxt);
            break;
        case "dimension":
            if (!version.orElse("1.x").equals("2.0")) {
                dims = Maps.newHashMap();
                // Deal with the id, size and role inside dimension.
                while (p.nextValue() != JsonToken.END_OBJECT) {
                    switch (p.getCurrentName()) {
                    case "id":
                        ids = p.readValueAs(ID_SET);
                        break;
                    case "size":
                        sizes = p.readValueAs(SIZE_LIST);
                        break;
                    case "role":
                        roles = p.readValueAs(ROLE_MULTIMAP);
                        break;
                    default:
                        dims.put(p.getCurrentName(), ctxt.readValue(p, Dimension.Builder.class));
                    }
                }
            } else {
                dims = p.readValueAs(DIMENSION_MAP);
            }
            break;
        case "id":
            ids = p.readValueAs(ID_SET);
            break;
        case "size":
            sizes = p.readValueAs(SIZE_LIST);
            break;
        case "role":
            roles = p.readValueAs(ROLE_MULTIMAP);
            break;
        case "extension":
            extension = Optional.of(ctxt.readValue(p, ObjectNode.class));
            break;
        case "link":
        case "status":
            // TODO
            p.skipChildren();
            break;
        case "version":
            version = Optional.of(_parseString(p, ctxt));
            break;
        case "class":
            // TODO
            clazz = Optional.of(_parseString(p, ctxt));
            break;
        default:
            boolean handled = ctxt.handleUnknownProperty(p, this, Dimension.Builder.class, p.getCurrentName());
            if (!handled)
                p.skipChildren();
            break;
        }
    }

    // Setup roles
    for (Map.Entry<String, String> dimRole : roles.entries()) {
        Dimension.Roles role = Dimension.Roles.valueOf(dimRole.getKey().toUpperCase());
        Dimension.Builder dimension = checkNotNull(dims.get(dimRole.getValue()),
                "could not assign the role {} to the dimension {}. The dimension did not exist", role,
                dimRole.getValue()

        );
        dimension.withRole(role);
    }

    List<Dimension.Builder> orderedDimensions = Lists.newArrayList();
    for (String dimensionName : ids) {
        orderedDimensions.add(dims.get(dimensionName));
    }

    // TODO: Check size?

    // Check ids and add to the data set.
    checkArgument(ids.size() == dims.size(), "dimension and size did not match");

    if (extension.isPresent()) {
        builder.withExtension(extension.get());
    }

    return builder.withDimensions(orderedDimensions).withValues(values);
}

From source file:net.floodlightcontroller.loadbalancer.MembersResource.java

protected LBMember jsonToMember(String json) throws IOException {
    MappingJsonFactory f = new MappingJsonFactory();
    JsonParser jp;
    LBMember member = new LBMember();

    try {/*w  w  w . j ava 2s  .c om*/
        jp = f.createJsonParser(json);
    } catch (JsonParseException e) {
        throw new IOException(e);
    }

    jp.nextToken();
    if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
        throw new IOException("Expected START_OBJECT");
    }

    while (jp.nextToken() != JsonToken.END_OBJECT) {
        if (jp.getCurrentToken() != JsonToken.FIELD_NAME) {
            throw new IOException("Expected FIELD_NAME");
        }

        String n = jp.getCurrentName();
        jp.nextToken();
        if (jp.getText().equals(""))
            continue;
        if (n.equals("id")) {
            member.id = jp.getText();
            continue;
        } else if (n.equals("address")) {
            member.address = IPv4.toIPv4Address(jp.getText());
            continue;
        } else if (n.equals("port")) {
            member.port = Short.parseShort(jp.getText());
            continue;
        } else if (n.equals("connection_limit")) {
            member.connectionLimit = Integer.parseInt(jp.getText());
            continue;
        } else if (n.equals("admin_state")) {
            member.adminState = Short.parseShort(jp.getText());
            continue;
        } else if (n.equals("status")) {
            member.status = Short.parseShort(jp.getText());
            continue;
        } else if (n.equals("pool_id")) {
            member.poolId = jp.getText();
            continue;
        }

        log.warn("Unrecognized field {} in " + "parsing Members", jp.getText());
    }
    jp.close();

    return member;
}

From source file:com.pursuer.reader.easyrss.data.parser.SubscriptionJSONParser.java

public void parse() throws JsonParseException, IOException, IllegalStateException {
    final JsonFactory factory = new JsonFactory();
    final JsonParser parser = factory.createJsonParser(input);
    Subscription sub = new Subscription();
    int level = 0;
    boolean found = false;
    while (parser.nextToken() != null) {
        final String name = parser.getCurrentName();
        switch (parser.getCurrentToken()) {
        case START_OBJECT:
        case START_ARRAY:
            level++;/* ww w  .  j ava  2  s .  c o  m*/
            break;
        case END_OBJECT:
        case END_ARRAY:
            level--;
            break;
        case VALUE_STRING:
            if (level == 3) {
                if ("id".equals(name)) {
                    sub.setUid(parser.getText());
                } else if ("htmlUrl".equals(name)) {
                    sub.setUrl(parser.getText());
                } else if ("title".equals(name)) {
                    sub.setTitle(Html.fromHtml(parser.getText()).toString());
                } else if ("sortid".equals(name)) {
                    sub.setSortId(parser.getText());
                } else if ("firstitemmsec".equals(name)) {
                    sub.setFirstItemMsec(Long.valueOf(parser.getText()));
                }
            } else if (level == 5 && "id".equals(name)) {
                sub.addTag(parser.getText());
            }
            break;
        case FIELD_NAME:
            if (level == 1 && "subscriptions".equals(name)) {
                found = true;
            }
            break;
        default:
        }
        if (level == 2) {
            if (sub.getUid() != null && listener != null) {
                listener.onSubscriptionRetrieved(sub);
            }
            sub = new Subscription();
        }
    }
    parser.close();
    if (!found) {
        throw new IllegalStateException("Invalid JSON input");
    }
}

From source file:com.sdl.odata.renderer.json.writer.JsonPropertyWriterTest.java

private List<Object> getJsonArray(JsonParser jsonParser) throws IOException {
    List<Object> objects = new ArrayList<>();
    while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
            Map<String, String> jsonObject = getJsonObject(jsonParser);
            objects.add(jsonObject);//from  w  w  w. ja  v a  2 s.c  o m
        } else {
            objects.add(jsonParser.getText());
        }
    }
    return objects;
}

From source file:io.pdef.json.JsonJacksonFormat.java

private List<?> readArray(final JsonParser parser) throws IOException {
    JsonToken current = parser.getCurrentToken();
    if (current != JsonToken.START_ARRAY) {
        throw new JsonFormatException("Bad JSON string, failed to read an array");
    }/*  ww w  . j a  v a 2 s .  c o  m*/

    List<Object> list = new ArrayList<Object>();
    while (true) {
        JsonToken next = parser.nextToken();
        if (next == null) {
            throw new JsonFormatException("End of file");
        } else if (next == JsonToken.END_ARRAY) {
            break;
        }

        Object element = read(parser);
        list.add(element);
    }

    return list;
}

From source file:de.konqi.fitapi.auth.PublicKeysManager.java

/**
 * Forces a refresh of the public certificates downloaded from {@link #getPublicCertsEncodedUrl}.
 *
 * <p>/*from  www  . ja  v  a2  s  . c o m*/
 * This method is automatically called from {@link #getPublicKeys()} if the public keys have not
 * yet been initialized or if the expiration time is very close, so normally this doesn't need to
 * be called. Only call this method to explicitly force the public keys to be updated.
 * </p>
 */
public PublicKeysManager refresh() throws GeneralSecurityException, IOException {
    lock.lock();
    try {
        publicKeys = new ArrayList<PublicKey>();
        // HTTP request to public endpoint
        CertificateFactory factory = SecurityUtils.getX509CertificateFactory();
        HttpResponse certsResponse = transport.createRequestFactory()
                .buildGetRequest(new GenericUrl(publicCertsEncodedUrl)).execute();
        expirationTimeMilliseconds = clock.currentTimeMillis()
                + getCacheTimeInSec(certsResponse.getHeaders()) * 1000;
        // parse each public key in the JSON response
        JsonParser parser = jsonFactory.createJsonParser(certsResponse.getContent());
        JsonToken currentToken = parser.getCurrentToken();
        // token is null at start, so get next token
        if (currentToken == null) {
            currentToken = parser.nextToken();
        }
        Preconditions.checkArgument(currentToken == JsonToken.START_OBJECT);
        try {
            while (parser.nextToken() != JsonToken.END_OBJECT) {
                parser.nextToken();
                String certValue = parser.getText();
                X509Certificate x509Cert = (X509Certificate) factory
                        .generateCertificate(new ByteArrayInputStream(StringUtils.getBytesUtf8(certValue)));
                publicKeys.add(x509Cert.getPublicKey());
            }
            publicKeys = Collections.unmodifiableList(publicKeys);
        } finally {
            parser.close();
        }
        return this;
    } finally {
        lock.unlock();
    }
}

From source file:io.pdef.json.JsonJacksonFormat.java

private Map<String, Object> readMap(final JsonParser parser) throws IOException {
    JsonToken current = parser.getCurrentToken();
    if (current != JsonToken.START_OBJECT) {
        throw new JsonFormatException("Bad JSON string, failed to read an object");
    }//from  w ww  . j a va 2 s.c o m

    Map<String, Object> map = new LinkedHashMap<String, Object>();
    while (true) {
        JsonToken next = parser.nextToken();
        if (next == null) {
            throw new JsonFormatException("End of file");
        } else if (next == JsonToken.END_OBJECT) {
            break;
        } else if (next != JsonToken.FIELD_NAME) {
            throw new JsonFormatException("Failed to read a field name from " + next);
        }

        String field = parser.getCurrentName();
        parser.nextToken();
        Object value = read(parser);
        map.put(field, value);
    }

    return map;
}

From source file:io.pdef.json.JsonJacksonFormat.java

private Object read(final JsonParser parser) throws IOException {
    JsonToken current = parser.getCurrentToken();
    if (current == null || current == JsonToken.VALUE_NULL) {
        return null;
    }/*from   ww w . j a va 2  s  .  c o  m*/

    switch (current) {
    case VALUE_NULL:
        return null;
    case VALUE_TRUE:
        return true;
    case VALUE_FALSE:
        return false;
    case VALUE_STRING:
        return parser.getValueAsString();
    case VALUE_NUMBER_INT:
    case VALUE_NUMBER_FLOAT:
        return parser.getNumberValue();
    case START_ARRAY:
        return readArray(parser);
    case START_OBJECT:
        return readMap(parser);
    default:
        throw new JsonFormatException("Bad JSON string");
    }
}