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

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

Introduction

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

Prototype

public abstract JsonParser skipChildren() throws IOException, JsonParseException;

Source Link

Document

Method that will skip all child tokens of an array or object token that the parser currently points to, iff stream points to JsonToken#START_OBJECT or JsonToken#START_ARRAY .

Usage

From source file:org.agorava.twitter.jackson.LocalTrendsDeserializer.java

@Override
public LocalTrendsHolder deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    JsonNode tree = jp.readValueAsTree();
    Iterator<JsonNode> dayIt = tree.iterator();
    if (dayIt.hasNext()) {
        JsonNode day = dayIt.next();// w w w . j  a va  2s  .c  o m
        Date createdAt = toDate(day.get("created_at").asText());
        JsonNode trendNodes = day.get("trends");
        List<Trend> trends = new ArrayList<Trend>();
        for (Iterator<JsonNode> trendsIt = trendNodes.iterator(); trendsIt.hasNext();) {
            JsonNode trendNode = trendsIt.next();
            trends.add(new Trend(trendNode.get("name").asText(), trendNode.get("query").textValue()));
        }
        jp.skipChildren();
        return new LocalTrendsHolder(new Trends(createdAt, trends));
    }

    throw ctxt.mappingException(LocalTrendsHolder.class);
}

From source file:org.springframework.social.twitter.api.impl.LocalTrendsDeserializer.java

@Override
public LocalTrendsHolder deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    JsonNode node = jp.readValueAs(JsonNode.class);
    Iterator<JsonNode> dayIt = node.iterator();
    if (dayIt.hasNext()) {
        JsonNode day = dayIt.next();//from w  w  w .  j  a  v a 2  s.co m
        Date createdAt = toDate(day.get("created_at").asText());
        JsonNode trendNodes = day.get("trends");
        List<Trend> trends = new ArrayList<Trend>();
        for (Iterator<JsonNode> trendsIt = trendNodes.iterator(); trendsIt.hasNext();) {
            JsonNode trendNode = trendsIt.next();
            trends.add(new Trend(trendNode.get("name").asText(), trendNode.get("query").asText()));
        }
        jp.skipChildren();
        return new LocalTrendsHolder(new Trends(createdAt, trends));
    }

    throw ctxt.mappingException(LocalTrendsHolder.class);
}

From source file:com.unboundid.scim2.client.requests.SearchRequestBuilder.java

/**
 * Invoke the SCIM retrieve request./*from w w w.  j  av a  2 s.  c o  m*/
 *
 * @param post {@code true} to send the request using POST or {@code false}
 *             to send the request using GET.
 * @param <T> The type of objects to return.
 * @param resultHandler The search result handler that should be used to
 *                      process the resources.
 * @param cls The Java class object used to determine the type to return.
 * @throws ScimException If an error occurred.
 */
private <T> void invoke(final boolean post, final SearchResultHandler<T> resultHandler, final Class<T> cls)
        throws ScimException {
    Response response;
    if (post) {
        Set<String> attributeSet = null;
        Set<String> excludedAttributeSet = null;
        if (attributes != null && attributes.size() > 0) {
            if (!excluded) {
                attributeSet = attributes;
            } else {
                excludedAttributeSet = attributes;
            }
        }

        SearchRequest searchRequest = new SearchRequest(attributeSet, excludedAttributeSet, filter, sortBy,
                sortOrder, startIndex, count);

        Invocation.Builder builder = target().path(ApiConstants.SEARCH_WITH_POST_PATH_EXTENSION)
                .request(ScimService.MEDIA_TYPE_SCIM_TYPE, MediaType.APPLICATION_JSON_TYPE);
        for (Map.Entry<String, List<Object>> header : headers.entrySet()) {
            builder = builder.header(header.getKey(), StaticUtils.listToString(header.getValue(), ", "));
        }
        response = builder.post(Entity.entity(searchRequest, getContentType()));
    } else {
        response = buildRequest().get();
    }

    try {
        if (response.getStatusInfo().getFamily() == Response.Status.Family.SUCCESSFUL) {
            InputStream inputStream = response.readEntity(InputStream.class);
            try {
                JsonParser parser = JsonUtils.getObjectReader().getFactory().createParser(inputStream);
                try {
                    parser.nextToken();
                    boolean stop = false;
                    while (!stop && parser.nextToken() != JsonToken.END_OBJECT) {
                        String field = parser.getCurrentName();
                        parser.nextToken();
                        if (field.equals("schemas")) {
                            parser.skipChildren();
                        } else if (field.equals("totalResults")) {
                            resultHandler.totalResults(parser.getIntValue());
                        } else if (field.equals("startIndex")) {
                            resultHandler.startIndex(parser.getIntValue());
                        } else if (field.equals("itemsPerPage")) {
                            resultHandler.itemsPerPage(parser.getIntValue());
                        } else if (field.equals("Resources")) {
                            while (parser.nextToken() != JsonToken.END_ARRAY) {
                                if (!resultHandler.resource(parser.readValueAs(cls))) {
                                    stop = true;
                                    break;
                                }
                            }
                        } else if (SchemaUtils.isUrn(field)) {
                            resultHandler.extension(field, parser.<ObjectNode>readValueAsTree());
                        } else {
                            // Just skip this field
                            parser.nextToken();
                        }
                    }
                } finally {
                    if (inputStream != null) {
                        inputStream.close();
                    }
                    parser.close();
                }
            } catch (IOException e) {
                throw new ResponseProcessingException(response, e);
            }
        } else {
            throw toScimException(response);
        }
    } finally {
        response.close();
    }
}

From source file:GetAppConfig.java

private void getConf() {
    String line;//from   w w w. j  a va 2 s.  c o  m
    String json = "";
    try {
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(new FileInputStream(this.jsonfile), "UTF-8"));
        while ((line = reader.readLine()) != null) {
            json += line;
        }
        reader.close();
    } catch (Exception e) {
        System.out.println("Error: readconf(): " + e.getMessage());
        return;
    }

    JsonFactory factory = new JsonFactory();
    try {
        JsonParser parser = factory.createParser(json);
        while (parser.nextToken() != JsonToken.END_OBJECT) {
            String name = parser.getCurrentName();
            if (name == null)
                continue;
            parser.nextToken();
            if (name.equals("userid")) {
                this.setUserID(parser.getText());
            } else if (name.equals("passwd")) {
                this.setPassword(parser.getText());
            } else if (name.equals("deviceid")) {
                this.setDeviceID(parser.getText());
            } else if (name.equals("pkgdir")) {
                this.setPackageDir(parser.getText());
            } else {
                parser.skipChildren();
            }
        } // while
    } catch (Exception e) {
        System.out.println("Error: parseconf(): " + e.getMessage());
    }
}

From source file:org.h2gis.drivers.geojson.GeoJsonReaderDriver.java

/**
 * We skip the CRS because it has been already parsed.
 * //from   w w  w.j  a va  2 s  .  c  o  m
 *
 * @param jp
 */
private String skipCRS(JsonParser jp) throws IOException {
    jp.nextToken(); //START_OBJECT {
    jp.skipChildren();
    /* jp.nextToken();// crs type
     jp.nextToken(); // crs name
     jp.nextToken(); // crs properties
     jp.nextToken(); //START_OBJECT {
     jp.nextToken(); // crs name
     jp.nextToken(); // crs value
     jp.nextToken(); //END_OBJECT }
     jp.nextToken(); //END_OBJECT }*/
    jp.nextToken(); //Go to features
    return jp.getText();
}

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

private Enumerable parseObject(JsonParser jp, Class<? extends Enumerable> type) throws IOException {
    Enumerable value = null;//from  w  ww  .j  av  a 2  s  .c o  m
    while (true) {
        final JsonToken nextToken = jp.nextToken();
        if (nextToken == null)
            throw new IllegalStateException("JSON stream ended while parsing an Enumerable object.");

        switch (nextToken) {
        case VALUE_NULL:
        case VALUE_STRING:
            if (value == null && "value".equals(jp.getCurrentName())) {
                value = Enumerable.parse(type, jp.getText());
            }
            break;
        case END_OBJECT:
            jp.clearCurrentToken();
            if (value == null)
                throw new IllegalStateException(
                        "Attribute \"value\" is required to parse an Enumerable JSON object.");
            return value;
        case START_ARRAY:
        case START_OBJECT:
            jp.skipChildren();
            jp.clearCurrentToken();
            break;
        }
    }
}

From source file:org.h2gis.drivers.geojson.GeoJsonReaderDriver.java

/**
 * Check if the geometry is well formatted and contained an array of coordinates.
 * //from  ww  w . j  a v a  2 s.  co m
 * @param jp
 * @param metadataBuilder
 * @throws SQLException
 * @throws IOException 
 */
private void checkCoordinates(JsonParser jp, StringBuilder metadataBuilder, String geometryType)
        throws SQLException, IOException {
    jp.nextToken(); // FIELD_NAME coordinates
    if (jp.getText().equalsIgnoreCase(GeoJsonField.COORDINATES)) {
        jp.nextToken();//START coordinates array
        jp.skipChildren();
        if (isH2) {
            metadataBuilder.append("THE_GEOM ").append(geometryType).append(",");
        } else {
            metadataBuilder.append("THE_GEOM GEOMETRY(").append(geometryType).append(",").append(parsedSRID)
                    .append("),");
        }
    } else {
        throw new SQLException("Malformed GeoJSON file. Expected 'coordinates', found '" + jp.getText() + "'");
    }
}

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

private List<HttpHost> readHosts(HttpEntity entity) throws IOException {
    try (InputStream inputStream = entity.getContent()) {
        JsonParser parser = jsonFactory.createParser(inputStream);
        if (parser.nextToken() != JsonToken.START_OBJECT) {
            throw new IOException("expected data to start with an object");
        }/*from w  w  w .  j  a  v  a  2s . co  m*/
        List<HttpHost> hosts = new ArrayList<>();
        while (parser.nextToken() != JsonToken.END_OBJECT) {
            if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
                if ("nodes".equals(parser.getCurrentName())) {
                    while (parser.nextToken() != JsonToken.END_OBJECT) {
                        JsonToken token = parser.nextToken();
                        assert token == JsonToken.START_OBJECT;
                        String nodeId = parser.getCurrentName();
                        HttpHost sniffedHost = readHost(nodeId, parser, this.scheme);
                        if (sniffedHost != null) {
                            logger.trace("adding node [" + nodeId + "]");
                            hosts.add(sniffedHost);
                        }
                    }
                } else {
                    parser.skipChildren();
                }
            }
        }
        return hosts;
    }
}

From source file:com.github.shyiko.jackson.module.advice.AdvisedBeanDeserializer.java

protected Object deserializeWithView(JsonParser jp, DeserializationContext ctxt, Object bean,
        Class<?> activeView) throws IOException {
    beanDeserializerAdvice.before(bean, jp, ctxt);
    JsonToken t = jp.getCurrentToken();/*from ww w  .  ja v  a 2  s.  c  o  m*/
    for (; t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
        String propName = jp.getCurrentName();
        // Skip field name:
        jp.nextToken();

        if (beanDeserializerAdvice.intercept(bean, propName, jp, ctxt)) {
            continue;
        }

        SettableBeanProperty prop = _beanProperties.find(propName);
        if (prop != null) {
            if (!prop.visibleInView(activeView)) {
                jp.skipChildren();
                continue;
            }
            try {
                prop.deserializeAndSet(jp, ctxt, bean);
            } catch (Exception e) {
                wrapAndThrow(e, bean, propName, ctxt);
            }
            continue;
        }
        handleUnknownVanilla(jp, ctxt, bean, propName);
    }
    beanDeserializerAdvice.after(bean, jp, ctxt);
    return bean;
}

From source file:data.DefaultExchanger.java

public void importData(String dbName, JsonParser parser, JdbcTemplate jdbcTemplate) throws IOException {
    PlatformTransactionManager tm = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
    TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());

    try {//from   w w w.  j a  v  a2 s .c  om
        if (dbName.equals("MySQL")) {
            jdbcTemplate.update("SET FOREIGN_KEY_CHECKS = 0");
            jdbcTemplate.update("SET NAMES \'utf8mb4\'");
        }

        final Configuration config = Configuration.root();
        int batchSize = config.getInt(DATA_BATCH_SIZE_KEY, DEFAULT_BATCH_SIZE);
        if (parser.nextToken() != JsonToken.END_OBJECT) {
            String fieldName = parser.getCurrentName();
            play.Logger.debug("importing {}", fieldName);
            if (fieldName.equalsIgnoreCase(getTable())) {
                truncateTable(jdbcTemplate);
                JsonToken current = parser.nextToken();
                if (current == JsonToken.START_ARRAY) {
                    importDataFromArray(parser, jdbcTemplate, batchSize);
                    importSequence(dbName, parser, jdbcTemplate);
                } else {
                    play.Logger.info("Error: records should be an array: skipping.");
                    parser.skipChildren();
                }
            }
        }
        tm.commit(ts);
    } catch (Exception e) {
        e.printStackTrace();
        tm.rollback(ts);
    } finally {
        if (dbName.equals("MySQL")) {
            jdbcTemplate.update("SET FOREIGN_KEY_CHECKS = 1");
        }
    }
}