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

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

Introduction

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

Prototype

public abstract String getText() throws IOException, JsonParseException;

Source Link

Document

Method for accessing textual representation of the current token; if no current token (before first call to #nextToken , or after encountering end-of-input), returns null.

Usage

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

/**
 * Parses the GeoJSON data and set the values to the table.
 *
 * @throws IOException//from  ww  w . j  a va2s  . c o m
 * @throws SQLException
 */
private void parseData() throws IOException, SQLException {
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(fileName);
        JsonParser jp = jsFactory.createParser(fis);

        jp.nextToken();//START_OBJECT
        jp.nextToken(); // field_name (type)
        jp.nextToken(); // value_string (FeatureCollection)
        String geomType = jp.getText();
        if (geomType.equalsIgnoreCase(GeoJsonField.FEATURECOLLECTION)) {
            parseFeatures(jp);
        } else {
            throw new SQLException(
                    "Malformed GeoJSON file. Expected 'FeatureCollection', found '" + geomType + "'");
        }
        jp.close();
    } catch (FileNotFoundException ex) {
        throw new SQLException(ex);

    } finally {
        try {
            if (fis != null) {
                fis.close();
            }
        } catch (IOException ex) {
            throw new SQLException(ex);
        }
    }
}

From source file:org.oscim.utils.overpass.OverpassAPIReader.java

private void parseRelation(JsonParser jp) throws JsonParseException, IOException {

    long id = 0;//from  w  w w  .j a  v a  2s. com
    TagSet tags = null;
    ArrayList<TmpRelation> members = new ArrayList<TmpRelation>();

    while (jp.nextToken() != JsonToken.END_OBJECT) {

        String name = jp.getCurrentName();
        jp.nextToken();

        if ("id".equals(name))
            id = jp.getLongValue();

        else if ("members".equals(name)) {
            while (jp.nextToken() != JsonToken.END_ARRAY) {
                TmpRelation member = new TmpRelation();

                while (jp.nextToken() != JsonToken.END_OBJECT) {
                    name = jp.getCurrentName();
                    jp.nextToken();

                    if ("type".equals(name))
                        member.type = jp.getText();

                    else if ("ref".equals(name))
                        member.id = Long.valueOf(jp.getLongValue());

                    else if ("role".equals(name))
                        member.role = jp.getText();
                }
                members.add(member);
            }
        } else if ("tags".equals(name))
            tags = parseTags(jp);
    }

    OsmRelation relation = new OsmRelation(tags, id, members.size());
    ownRelations.add(relation);
    relationsById.put(Long.valueOf(id), relation);
    relationMembersForRelation.put(relation, members);
}

From source file:org.zapto.samhippiemiddlepoolchecker.Values.java

PoolError update(String address, URL... urls) {
    //error is returned at the end
    PoolError error = PoolError.NONE;/* w  w  w  . jav  a 2s. c o  m*/

    //Aborting the http to save data throws an error. This says if we should cover it up.
    boolean actualNetworkError = true;

    //reset the values. If they are never changed, then 0 is the most accurate number
    accepted = 0;
    rejected = 0;
    immature = 0;
    unexchanged = 0;
    balance = 0;
    paid = 0;

    try {
        //streaming the json
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(urls[0].toString());
        HttpResponse response = client.execute(request);
        InputStream in = response.getEntity().getContent();

        JsonFactory factory = new JsonFactory();
        JsonParser parser = factory.createParser(in);
        boolean addressFound = false;//see if we need to return and address not found error
        mainParse: //label for breaking when address is found
        while (parser.nextToken() != JsonToken.END_OBJECT)//finding "report"
        {
            if ("report".equals(parser.getCurrentName()))//beginning of report
            {
                boolean firstRun = true;
                while (parser.nextToken() == JsonToken.START_ARRAY)//each address has its own array
                {
                    if (firstRun)//this jumps over some junk at the begining
                    {
                        parser.nextToken();
                        firstRun = false;
                    }
                    parser.nextToken();//have to skip some junk each time
                    if (address.equals(parser.getText()))//we have found our address
                    {
                        addressFound = true;//this prevents an address not found error from being returned
                        while (parser.nextToken() != JsonToken.END_ARRAY) {
                            //getting each of our values from the array.
                            //having -420 as a default lets us see if the value is there while not using up 0

                            if ("megahashesPerSecond".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    accepted = value;
                                }
                            }

                            if ("rejectedMegahashesPerSecond".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    rejected = value;
                                }
                            }

                            if ("immatureBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    immature = value;
                                }
                            }

                            if ("unexchangedBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    unexchanged = value;
                                }
                            }

                            if ("bitcoinBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    balance = value;
                                }
                            }

                            if ("paidOut".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    paid = value;
                                }
                            }
                        }
                        break mainParse;//no need to download any more addresses
                    } else {
                        while (parser.nextToken() != JsonToken.END_ARRAY) {
                        } //skipping over an unwanted address
                    }
                }
            }
        }
        if (!addressFound)//we never found an address
        {
            error = PoolError.ADDRESS;
        }
        actualNetworkError = false;
        request.abort();//should stop any extra data usage, also forces ioexception (which is ignored)
        parser.close();
        in.close();
    } catch (MalformedURLException e) {
        if (actualNetworkError) {
            error = PoolError.NETWORK;
        }
    } catch (IOException e) {
        if (actualNetworkError) {
            error = PoolError.NETWORK;
        }
    }
    return error;
}

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

/**
 * Parses geometry metadata.// w  w w  .j  av a 2 s .c  o  m
 *
 * @param jp
 * @param metadataBuilder
 */
private void parseGeometryMetadata(JsonParser jp, StringBuilder metadataBuilder)
        throws IOException, SQLException {
    jp.nextToken(); //START_OBJECT {
    jp.nextToken(); // FIELD_NAME type     
    jp.nextToken(); //VALUE_STRING Point
    String geomType = jp.getText();
    if (geomType.equalsIgnoreCase(GeoJsonField.POINT)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.POINT);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.LINESTRING)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.LINESTRING);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.POLYGON)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.POLYGON);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.MULTIPOINT)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.MULTIPOINT);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.MULTILINESTRING)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.MULTILINESTRING);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.MULTIPOLYGON)) {
        checkCoordinates(jp, metadataBuilder, GeoJsonField.MULTIPOLYGON);
    } else if (geomType.equalsIgnoreCase(GeoJsonField.GEOMETRYCOLLECTION)) {
        jp.nextToken();//START geometries array
        if (jp.getText().equalsIgnoreCase(GeoJsonField.GEOMETRIES)) {
            jp.skipChildren();
            if (isH2) {
                metadataBuilder.append("THE_GEOM GEOMETRY,");
            } else {
                metadataBuilder.append("THE_GEOM GEOMETRY(geometry,").append(parsedSRID).append("),");
            }
        } else {
            throw new SQLException(
                    "Malformed GeoJSON file. Expected 'geometries', found '" + jp.getText() + "'");
        }
    } else {
        throw new SQLException("Unsupported geometry : " + geomType);
    }
}

From source file:com.cedarsoft.serialization.test.performance.XmlParserPerformance.java

private void benchParse(@Nonnull JsonFactory factory, @Nonnull byte[] contentSample)
        throws XMLStreamException, IOException {
    for (int i = 0; i < BIG; i++) {
        JsonParser parser = factory.createParser(contentSample);

        assertEquals(JsonToken.START_OBJECT, parser.nextToken());

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("id", parser.getCurrentName());
        assertEquals(JsonToken.VALUE_STRING, parser.nextToken());
        String id = parser.getText();
        assertEquals("Canon Raw", id);

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("dependent", parser.getCurrentName());
        assertEquals(JsonToken.VALUE_FALSE, parser.nextToken());
        boolean dependent = parser.getBooleanValue();
        assertFalse(dependent);//from   w w  w  .j a v a  2 s .  c  o  m

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("extension", parser.getCurrentName());
        assertEquals(JsonToken.START_OBJECT, parser.nextToken());

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("extension", parser.getCurrentName());
        assertEquals(JsonToken.VALUE_STRING, parser.nextToken());
        String extension = parser.getText();
        assertEquals("cr2", extension);

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("default", parser.getCurrentName());
        assertEquals(JsonToken.VALUE_TRUE, parser.nextToken());
        boolean isDefault = parser.getBooleanValue();
        assertTrue(isDefault);

        assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
        assertEquals("delimiter", parser.getCurrentName());
        assertEquals(JsonToken.VALUE_STRING, parser.nextToken());
        String delimiter = parser.getText();
        assertEquals(".", delimiter);

        assertEquals(JsonToken.END_OBJECT, parser.nextToken());
        assertEquals(JsonToken.END_OBJECT, parser.nextToken());
        assertNull(parser.nextToken());

        parser.close();

        FileType type = new FileType(id, new Extension(delimiter, extension, isDefault), dependent);
        assertNotNull(type);
    }
}

From source file:org.mongojack.internal.object.BsonObjectGenerator.java

@Override
public void copyCurrentEvent(JsonParser jp) throws IOException {
    JsonToken t = jp.getCurrentToken();//from  w ww.j  a  v a2 s .c o m
    switch (t) {
    case START_OBJECT:
        writeStartObject();
        break;
    case END_OBJECT:
        writeEndObject();
        break;
    case START_ARRAY:
        writeStartArray();
        break;
    case END_ARRAY:
        writeEndArray();
        break;
    case FIELD_NAME:
        writeFieldName(jp.getCurrentName());
        break;
    case VALUE_STRING:
        if (jp.hasTextCharacters()) {
            writeString(jp.getTextCharacters(), jp.getTextOffset(), jp.getTextLength());
        } else {
            writeString(jp.getText());
        }
        break;
    case VALUE_NUMBER_INT:
        switch (jp.getNumberType()) {
        case INT:
            writeNumber(jp.getIntValue());
            break;
        case BIG_INTEGER:
            writeNumber(jp.getBigIntegerValue());
            break;
        default:
            writeNumber(jp.getLongValue());
        }
        break;
    case VALUE_NUMBER_FLOAT:
        switch (jp.getNumberType()) {
        case BIG_DECIMAL:
            writeNumber(jp.getDecimalValue());
            break;
        case FLOAT:
            writeNumber(jp.getFloatValue());
            break;
        default:
            writeNumber(jp.getDoubleValue());
        }
        break;
    case VALUE_TRUE:
        writeBoolean(true);
        break;
    case VALUE_FALSE:
        writeBoolean(false);
        break;
    case VALUE_NULL:
        writeNull();
        break;
    case VALUE_EMBEDDED_OBJECT:
        writeObject(jp.getEmbeddedObject());
        break;
    }
}

From source file:com.github.heuermh.personalgenome.client.converter.JacksonPersonalGenomeConverter.java

@Override
public Genome parseGenomes(final InputStream inputStream) {
    checkNotNull(inputStream);/*from  w w w .ja v a2s  .  com*/
    JsonParser parser = null;
    try {
        parser = jsonFactory.createParser(inputStream);
        parser.nextToken();

        String id = null;
        String values = null;
        while (parser.nextToken() != JsonToken.END_OBJECT) {
            String field = parser.getCurrentName();
            parser.nextToken();

            if ("id".equals(field)) {
                id = parser.getText();
            } else if ("genome".equals(field)) {
                values = parser.getText();
            }
        }
        return new Genome(id, values);
    } catch (IOException e) {
        logger.warn("could not parse genomes", e);
    } finally {
        try {
            inputStream.close();
        } catch (Exception e) {
            // ignored
        }
        try {
            parser.close();
        } catch (Exception e) {
            // ignored
        }
    }
    return null;
}

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

/**
 * Parses the properties of a feature/*w  ww .  j a  v a2  s.c o m*/
 *
 * Syntax:
 *
 * "properties": {"prop0": "value0"}
 *
 * @param jsParser
 */
private void parseProperties(JsonParser jp, int fieldIndex) throws IOException, SQLException {
    jp.nextToken();//START_OBJECT {
    while (jp.nextToken() != JsonToken.END_OBJECT) {
        JsonToken value = jp.nextToken();
        if (value == JsonToken.VALUE_STRING) {
            getPreparedStatement().setObject(fieldIndex, jp.getText());
            fieldIndex++;
        } else if (value == JsonToken.VALUE_TRUE) {
            getPreparedStatement().setObject(fieldIndex, jp.getValueAsBoolean());
            fieldIndex++;
        } else if (value == JsonToken.VALUE_FALSE) {
            getPreparedStatement().setObject(fieldIndex, jp.getValueAsBoolean());
            fieldIndex++;
        } else if (value == JsonToken.VALUE_NUMBER_FLOAT) {
            getPreparedStatement().setObject(fieldIndex, jp.getValueAsDouble());
            fieldIndex++;
        } else if (value == JsonToken.VALUE_NUMBER_INT) {
            getPreparedStatement().setObject(fieldIndex, jp.getValueAsInt());
            fieldIndex++;
        } else if (value == JsonToken.VALUE_NULL) {
            getPreparedStatement().setObject(fieldIndex, null);
            fieldIndex++;
        } else {
            //ignore other value
        }
    }

}

From source file:com.github.heuermh.personalgenome.client.converter.JacksonPersonalGenomeConverter.java

@Override
public PersonalGenomeClientException parseException(final InputStream inputStream) {
    checkNotNull(inputStream);/*  w ww. ja  v  a2  s.co  m*/
    JsonParser parser = null;
    try {
        parser = jsonFactory.createParser(inputStream);
        parser.nextToken();

        String error = null;
        String errorDescription = null;
        while (parser.nextToken() != JsonToken.END_OBJECT) {
            String field = parser.getCurrentName();
            parser.nextToken();

            if ("error".equals(field)) {
                error = parser.getText();
            } else if ("error_description".equals(field)) {
                errorDescription = parser.getText();
            }
        }
        if ("access_denied".equals(error)) {
            return new AccessDeniedException(errorDescription);
        } else if ("invalid_client".equals(error)) {
            return new InvalidClientException(errorDescription);
        } else if ("invalid_request".equals(error)) {
            return new InvalidRequestException(errorDescription);
        } else if ("invalid_scope".equals(error)) {
            return new InvalidScopeException(errorDescription);
        }
        return new PersonalGenomeClientException(errorDescription);
    } catch (IOException e) {
        logger.warn("could not parse exception", e);
    } finally {
        try {
            inputStream.close();
        } catch (Exception e) {
            // ignored
        }
        try {
            parser.close();
        } catch (Exception e) {
            // ignored
        }
    }
    return new PersonalGenomeClientException("unknown error");
}

From source file:com.zenesis.qx.remote.RequestHandler.java

/**
 * Reads the next token and ensures that it is a field name called <code>fieldName</code>; leaves the current
 * token on the start of the field value
 * @param jp//from   w  w w  .  java  2 s. co  m
 * @param fieldName
 * @throws ServletException
 * @throws IOException
 */
private void skipFieldName(JsonParser jp, String fieldName) throws ServletException, IOException {
    if (jp.nextToken() != JsonToken.FIELD_NAME)
        throw new ServletException("Cannot find field name - looking for " + fieldName + " found "
                + jp.getCurrentToken() + ":" + jp.getText());
    String str = jp.getText();
    if (!fieldName.equals(str))
        throw new ServletException("Cannot find field called " + fieldName + " found " + str);
    jp.nextToken();
}