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

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

Introduction

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

Prototype

public abstract JsonToken nextToken() throws IOException, JsonParseException;

Source Link

Document

Main iteration method, which will advance stream enough to determine type of the next token, if any.

Usage

From source file:org.elasticsearch.client.sniff.ElasticsearchNodesSniffer.java

private static Node readNode(String nodeId, JsonParser parser, Scheme scheme) throws IOException {
    HttpHost publishedHost = null;//www .j ava 2  s  .  c  om
    /*
     * We sniff the bound hosts so we can look up the node based on any
     * address on which it is listening. This is useful in Elasticsearch's
     * test framework where we sometimes publish ipv6 addresses but the
     * tests contact the node on ipv4.
     */
    Set<HttpHost> boundHosts = new HashSet<>();
    String name = null;
    String version = null;
    /*
     * Multi-valued attributes come with key = `real_key.index` and we
     * unflip them after reading them because we can't rely on the order
     * that they arive.
     */
    final Map<String, String> protoAttributes = new HashMap<String, String>();

    boolean sawRoles = false;
    boolean master = false;
    boolean data = false;
    boolean ingest = false;

    String fieldName = null;
    while (parser.nextToken() != JsonToken.END_OBJECT) {
        if (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
            fieldName = parser.getCurrentName();
        } else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
            if ("http".equals(fieldName)) {
                while (parser.nextToken() != JsonToken.END_OBJECT) {
                    if (parser.getCurrentToken() == JsonToken.VALUE_STRING
                            && "publish_address".equals(parser.getCurrentName())) {
                        URI publishAddressAsURI = URI.create(scheme + "://" + parser.getValueAsString());
                        publishedHost = new HttpHost(publishAddressAsURI.getHost(),
                                publishAddressAsURI.getPort(), publishAddressAsURI.getScheme());
                    } else if (parser.currentToken() == JsonToken.START_ARRAY
                            && "bound_address".equals(parser.getCurrentName())) {
                        while (parser.nextToken() != JsonToken.END_ARRAY) {
                            URI boundAddressAsURI = URI.create(scheme + "://" + parser.getValueAsString());
                            boundHosts.add(new HttpHost(boundAddressAsURI.getHost(),
                                    boundAddressAsURI.getPort(), boundAddressAsURI.getScheme()));
                        }
                    } else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
                        parser.skipChildren();
                    }
                }
            } else if ("attributes".equals(fieldName)) {
                while (parser.nextToken() != JsonToken.END_OBJECT) {
                    if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {
                        String oldValue = protoAttributes.put(parser.getCurrentName(),
                                parser.getValueAsString());
                        if (oldValue != null) {
                            throw new IOException("repeated attribute key [" + parser.getCurrentName() + "]");
                        }
                    } else {
                        parser.skipChildren();
                    }
                }
            } else {
                parser.skipChildren();
            }
        } else if (parser.currentToken() == JsonToken.START_ARRAY) {
            if ("roles".equals(fieldName)) {
                sawRoles = true;
                while (parser.nextToken() != JsonToken.END_ARRAY) {
                    switch (parser.getText()) {
                    case "master":
                        master = true;
                        break;
                    case "data":
                        data = true;
                        break;
                    case "ingest":
                        ingest = true;
                        break;
                    default:
                        logger.warn("unknown role [" + parser.getText() + "] on node [" + nodeId + "]");
                    }
                }
            } else {
                parser.skipChildren();
            }
        } else if (parser.currentToken().isScalarValue()) {
            if ("version".equals(fieldName)) {
                version = parser.getText();
            } else if ("name".equals(fieldName)) {
                name = parser.getText();
            }
        }
    }
    //http section is not present if http is not enabled on the node, ignore such nodes
    if (publishedHost == null) {
        logger.debug("skipping node [" + nodeId + "] with http disabled");
        return null;
    }

    Map<String, List<String>> realAttributes = new HashMap<>(protoAttributes.size());
    List<String> keys = new ArrayList<>(protoAttributes.keySet());
    for (String key : keys) {
        if (key.endsWith(".0")) {
            String realKey = key.substring(0, key.length() - 2);
            List<String> values = new ArrayList<>();
            int i = 0;
            while (true) {
                String value = protoAttributes.remove(realKey + "." + i);
                if (value == null) {
                    break;
                }
                values.add(value);
                i++;
            }
            realAttributes.put(realKey, unmodifiableList(values));
        }
    }
    for (Map.Entry<String, String> entry : protoAttributes.entrySet()) {
        realAttributes.put(entry.getKey(), singletonList(entry.getValue()));
    }

    if (version.startsWith("2.")) {
        /*
         * 2.x doesn't send roles, instead we try to read them from
         * attributes.
         */
        boolean clientAttribute = v2RoleAttributeValue(realAttributes, "client", false);
        Boolean masterAttribute = v2RoleAttributeValue(realAttributes, "master", null);
        Boolean dataAttribute = v2RoleAttributeValue(realAttributes, "data", null);
        master = masterAttribute == null ? false == clientAttribute : masterAttribute;
        data = dataAttribute == null ? false == clientAttribute : dataAttribute;
    } else {
        assert sawRoles : "didn't see roles for [" + nodeId + "]";
    }
    assert boundHosts.contains(publishedHost) : "[" + nodeId
            + "] doesn't make sense! publishedHost should be in boundHosts";
    logger.trace("adding node [" + nodeId + "]");
    return new Node(publishedHost, boundHosts, name, version, new Roles(master, data, ingest),
            unmodifiableMap(realAttributes));
}

From source file:com.netflix.hollow.jsonadapter.discover.HollowJsonAdapterSchemaDiscoverer.java

private void discoverSubArraySchemas(JsonParser parser, HollowDiscoveredSchema objectSchema)
        throws IOException {
    JsonToken token = parser.nextToken();

    while (token != JsonToken.END_ARRAY) {
        if (token == JsonToken.START_OBJECT) {
            discoverSchemas(parser, objectSchema);
        } else {/*from  w w w . j  a v a  2 s  .c o m*/
            discoverSchemaField(parser, token, "value", objectSchema);
        }
        token = parser.nextToken();
    }
}

From source file:org.apache.usergrid.chop.api.ProjectDeserializer.java

@Override
public Project deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException {
    ProjectBuilder builder = new ProjectBuilder();

    String tmp = jp.getText();/*  ww  w  .ja va 2  s.c  o m*/
    validate(jp, tmp, "{");
    LOG.debug("First token is {}", tmp);

    jp.nextToken();
    tmp = jp.getText();
    LOG.debug("Second token is {}", tmp);

    while (jp.hasCurrentToken()) {

        tmp = jp.getText();
        LOG.debug("Current token text = {}", tmp);

        if (tmp.equals("testPackageBase")) {
            jp.nextToken();
            builder.setTestPackageBase(jp.getText());
        } else if (tmp.equals("chopVersion")) {
            jp.nextToken();
            builder.setChopVersion(jp.getText());
        } else if (tmp.equals("createTimestamp")) {
            jp.nextToken();
            builder.setCreateTimestamp(jp.getText());
        } else if (tmp.equals("vcsVersion")) {
            jp.nextToken();
            builder.setVcsVersion(jp.getText());
        } else if (tmp.equals("vcsRepoUrl")) {
            jp.nextToken();
            builder.setVcsRepoUrl(jp.getText());
        } else if (tmp.equals("groupId")) {
            jp.nextToken();
            builder.setGroupId(jp.getText());
        } else if (tmp.equals("artifactId")) {
            jp.nextToken();
            builder.setArtifactId(jp.getText());
        } else if (tmp.equals("projectVersion")) {
            jp.nextToken();
            builder.setProjectVersion(jp.getText());
        } else if (tmp.equals("md5")) {
            jp.nextToken();
            builder.setMd5(jp.getText());
        } else if (tmp.equals("loadKey")) {
            jp.nextToken();
            builder.setLoadKey(jp.getText());
        } else if (tmp.equals("loadTime")) {
            jp.nextToken();
            builder.setLoadTime(jp.getText());
        }

        jp.nextToken();

        if (jp.getText().equals("}")) {
            break;
        }
    }

    return builder.getProject();
}

From source file:org.emfjson.jackson.streaming.StreamReader.java

protected ReferenceEntry createReferenceEntry(JsonParser parser, EReference reference, EObject owner)
        throws IOException {

    String id = null;/*  w  ww  .j a v a2s . c o  m*/

    while (parser.nextToken() != JsonToken.END_OBJECT) {
        String field = parser.getCurrentName();
        if (field.equalsIgnoreCase(Constants.EJS_REF_KEYWORD)) {
            id = parser.nextTextValue();
        }
    }

    return new ReferenceEntry(owner, reference, id);
}

From source file:org.onosproject.north.aaa.api.parser.impl.UserParser.java

private User jsonToUser(JsonParser jp) throws ParseException, IOException {
    User.Builder builder = User.builder();

    while (true) {
        JsonToken token = jp.nextToken();
        if (JsonToken.END_OBJECT.equals(token)) {
            // bail out
            break;
        }/*from  ww w .  j  a v a2 s  . c o  m*/

        if (JsonToken.FIELD_NAME.equals(token) && "username".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildUsername(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "password".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildPassword(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "roles".equals(jp.getCurrentName())) {
            jp.nextToken();
            String roles = jp.getText();
            if ("admin".equals(roles) || "user".equals(roles)) {
                builder.buildRoles(roles);
            } else {
                // bail out
                throw new ParseException("roles must be set to either \"admin\" or \"user\"");
            }

        } else if (JsonToken.FIELD_NAME.equals(token) && "switches".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after switches");
            }
            Set<String> switches = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                switches.add(jp.getText());
            }
            builder.buildSwitches(switches);

        } else if (JsonToken.FIELD_NAME.equals(token) && "domains".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after domains");
            }
            Set<String> domains = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                domains.add(jp.getText());
            }
            builder.buildDomains(domains);

        } else if (JsonToken.FIELD_NAME.equals(token) && "scopes".equals(jp.getCurrentName())) {
            token = jp.nextToken();
            if (!JsonToken.START_ARRAY.equals(token)) {
                // bail out
                throw new ParseException("expected ARRAY after scopes");
            }
            Set<String> scopes = new HashSet<>();

            while (true) {
                token = jp.nextToken();
                if (JsonToken.END_ARRAY.equals(token)) {
                    // bail out
                    break;
                }
                scopes.add(jp.getText());
            }
            builder.buildScopes(scopes);

        } else if (JsonToken.FIELD_NAME.equals(token) && "email".equals(jp.getCurrentName())) {
            jp.nextToken();
            String email = jp.getText();

            // verify email by email regex
            Pattern emailPattern = Pattern.compile(EMAIL_PATTERN);
            if (!emailPattern.matcher(email).matches()) {
                // bail out
                throw new ParseException("email is not valid");
            }
            builder.buildEmail(email);
        }
    }
    return builder.buildAll();
}

From source file:com.netflix.hollow.jsonadapter.discover.HollowJsonAdapterSchemaDiscoverer.java

private void discoverSubMapSchemas(JsonParser parser, HollowDiscoveredSchema objectSchema) throws IOException {
    JsonToken token = parser.nextToken();
    if (isDebug)/*  ww w  . ja  v a 2  s  .c  om*/
        System.out.println(
                "discoverSubMapSchemas[START]: token=" + token + ", fieldname=" + parser.getCurrentName());

    while (token != JsonToken.END_OBJECT) {
        if (isDebug)
            System.out.println(
                    "discoverSubMapSchemas[LOOP]: token=" + token + ", fieldname=" + parser.getCurrentName());
        if (token != JsonToken.FIELD_NAME) {
            if (token == JsonToken.START_OBJECT) {
                if (isDebug)
                    System.out.println("discoverSubMapSchemas[LOOP] discoverSchemas: token=" + token
                            + ", fieldname=" + parser.getCurrentName());
                discoverSchemas(parser, objectSchema);
            } else {
                if (isDebug)
                    System.out.println("discoverSubMapSchemas[LOOP] discoverSchemaField: token=" + token
                            + ", fieldname=" + parser.getCurrentName());
                discoverSchemaField(parser, token, "value", objectSchema);
            }
        }
        token = parser.nextToken();
    }

    if (isDebug)
        System.out.println("discoverSubMapSchemas[END]: token=" + token);
}

From source file:org.fluentd.jvmwatcher.JvmWatcher.java

/**
 * @param paramFilePath/*from  w ww. ja va 2s .  c  om*/
 */
public void loadProperty(String paramFilePath) {
    if (null == paramFilePath) {
        return;
    }

    try {
        // load JSON property file.
        File file = new File(paramFilePath);

        JsonFactory factory = new JsonFactory();
        JsonParser parser = factory.createParser(file);

        JsonToken token = null;
        while ((token = parser.nextToken()) != null) {
            if (token == JsonToken.FIELD_NAME) {
                if (parser.getText().compareTo("target") == 0) {
                    this.loadTarget(parser);
                }
            }
        }
        parser.close();
    } catch (JsonParseException e) {
        log.error("Property parse error.", e);
    } catch (IOException e) {
        log.error("Property file open error.", e);
    } catch (Exception e) {
        log.error("Property file open error.", e);
    }
}

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

@Override
public Option<?> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    if (plainMode) {
        Object obj = deserializer(0).deserialize(p, ctxt);
        return Option.of(obj);
    }//from   w  ww . j  a v  a  2s .  c o m
    boolean defined = false;
    Object value = null;
    int cnt = 0;
    while (p.nextToken() != JsonToken.END_ARRAY) {
        cnt++;
        switch (cnt) {
        case 1:
            String def = (String) stringDeserializer.deserialize(p, ctxt);
            if ("defined".equals(def)) {
                defined = true;
            } else if ("undefined".equals(def)) {
                defined = false;
            } else {
                throw ctxt.mappingException(javaType.getRawClass());
            }
            break;
        case 2:
            value = deserializer(0).deserialize(p, ctxt);
            break;
        }
    }
    if (defined) {
        if (cnt != 2) {
            throw ctxt.mappingException(javaType.getRawClass());
        }
        return Option.some(value);
    } else {
        if (cnt != 1) {
            throw ctxt.mappingException(javaType.getRawClass());
        }
        return Option.none();
    }
}

From source file:com.ntsync.shared.RawContact.java

private static RawOrganizationData readOrg(String rowId, JsonParser jp) throws IOException {
    String orgname = null;/*from w  w w .j a v  a 2  s .  c  o  m*/
    OrganizationType orgtype = null;
    String orgLabel = null;
    String department = null;
    String jobTitle = null;
    String title = null;
    boolean isSuperPrimary = false;
    boolean isPrimary = false;

    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String namefield = jp.getCurrentName();
        // move to value
        if (jp.nextToken() == null) {
            throw new JsonParseException("Invalid JSON-Structure. End of Object missing.",
                    jp.getCurrentLocation());
        }
        if (ContactConstants.DATA.equals(namefield)) {
            orgname = jp.getValueAsString();
        } else if (ContactConstants.TYPE.equals(namefield)) {
            orgtype = OrganizationType.fromVal(jp.getValueAsInt());
        } else if (ContactConstants.PRIMARY.equals(namefield)) {
            isPrimary = jp.getValueAsBoolean();
        } else if (ContactConstants.SUPERPRIMARY.equals(namefield)) {
            isSuperPrimary = jp.getValueAsBoolean();
        } else if (ContactConstants.LABEL.equals(namefield)) {
            orgLabel = jp.getValueAsString();
        } else if (ContactConstants.ORGANIZATION_DEPARTMENT.equals(namefield)) {
            department = jp.getValueAsString();
        } else if (ContactConstants.ORGANIZATION_TITLE.equals(namefield)) {
            title = jp.getValueAsString();
        } else if (ContactConstants.ORGANIZATION_JOB.equals(namefield)) {
            jobTitle = jp.getValueAsString();
        } else {
            LOG.error("Unrecognized Organization-field for row with Id:" + rowId + " Fieldname:" + namefield);
        }
    }

    if (orgtype == null) {
        orgtype = OrganizationType.TYPE_OTHER;
    }

    return new RawOrganizationData(orgname, orgtype, orgLabel, isPrimary, isSuperPrimary, title, department,
            jobTitle);
}

From source file:org.emfjson.jackson.streaming.StreamReader.java

public void parse(Resource resource, JsonParser parser) throws IOException {
    prepare(resource);/*  ww  w . j a v  a  2s .  c  om*/

    if (parser.getCurrentToken() == null) {
        parser.nextToken();
    }

    switch (parser.getCurrentToken()) {
    case START_OBJECT:
        EObject result = parseObject(parser, null, null, options.rootElement);
        if (result != null) {
            resource.getContents().add(result);
        }
        break;
    case START_ARRAY:
        parseArray(parser);
        break;
    default:
        break;
    }

    resolve();
    entries.clear();
}