Example usage for com.fasterxml.jackson.core JsonToken END_OBJECT

List of usage examples for com.fasterxml.jackson.core JsonToken END_OBJECT

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonToken END_OBJECT.

Prototype

JsonToken END_OBJECT

To view the source code for com.fasterxml.jackson.core JsonToken END_OBJECT.

Click Source Link

Document

END_OBJECT is returned when encountering '}' which signals ending of an Object value

Usage

From source file:com.cedarsoft.couchdb.io.RowSerializer.java

@Nonnull
public <K, V, D> Row<K, V, D> deserialize(@Nonnull JacksonSerializer<? super K> keySerializer,
        @Nonnull JacksonSerializer<? super V> valueSerializer,
        @Nullable JacksonSerializer<? extends D> documentSerializer, @Nonnull JsonParser parser)
        throws IOException, InvalidTypeException {
    JacksonParserWrapper wrapper = new JacksonParserWrapper(parser);
    wrapper.nextToken(JsonToken.FIELD_NAME);
    String fieldName = wrapper.getCurrentName();

    //The id//  w w  w.j  av  a  2  s . com
    @Nullable
    final DocId id;
    if (fieldName.equals(PROPERTY_ID)) {
        wrapper.nextValue();
        id = new DocId(wrapper.getText());
        wrapper.nextField(PROPERTY_KEY);
    } else {
        id = null;
    }

    //The key
    K key = (K) keySerializer.deserialize(parser);

    //The value
    wrapper.nextField(PROPERTY_VALUE);

    @Nullable
    V value = (V) valueSerializer.deserialize(parser);

    //The doc - if available
    @Nullable
    CouchDoc<? extends D> doc;

    JsonToken nextToken = wrapper.nextToken();
    if (nextToken == JsonToken.FIELD_NAME) {
        if (documentSerializer == null) {
            throw new NullPointerException("No document serializer found");
        }
        doc = couchDocSerializer.deserialize(documentSerializer, new JacksonParserWrapper(parser));

        wrapper.closeObject();
    } else {
        doc = null;
    }

    wrapper.verifyCurrentToken(JsonToken.END_OBJECT);
    return new Row<>(id, key, value, doc);
}

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

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

    String id = null;//from ww w. j a  v  a2 s  .co 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.oscim.utils.overpass.OverpassAPIReader.java

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

    long id = 0;/*from w w  w  .j  a  v  a  2 s .  co  m*/
    TagSet tags = null;
    ArrayList<OsmNode> wayNodes = new ArrayList<OsmNode>();

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

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

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

        else if ("nodes".equals(name)) {
            while (jp.nextToken() != JsonToken.END_ARRAY) {
                Long nodeId = Long.valueOf(jp.getLongValue());

                OsmNode node = nodesById.get(nodeId);
                if (node != null)
                    // log("missing node " + nodeId);
                    // else
                    wayNodes.add(node);
            }
        } else if ("tags".equals(name))
            tags = parseTags(jp);
    }

    // log("way: "+ id + " " + wayNodes.size());
    OsmWay way = new OsmWay(tags, id, wayNodes);
    ownWays.add(way);
    waysById.put(Long.valueOf(id), way);
}

From source file:org.graylog2.gelfclient.encoder.GelfMessageJsonEncoderTest.java

@Test
public void testNullLevel() throws Exception {
    final EmbeddedChannel channel = new EmbeddedChannel(new GelfMessageJsonEncoder());
    final GelfMessage message = new GelfMessageBuilder("test").build();

    message.setLevel(null);//from  w  w  w . ja  v a 2  s.  c o  m

    assertTrue(channel.writeOutbound(message));
    assertTrue(channel.finish());

    final ByteBuf byteBuf = (ByteBuf) channel.readOutbound();
    final byte[] bytes = new byte[byteBuf.readableBytes()];
    byteBuf.getBytes(0, bytes).release();
    final JsonFactory json = new JsonFactory();
    final JsonParser parser = json.createParser(bytes);

    String version = null;
    Number timestamp = null;
    String host = null;
    String short_message = null;
    String full_message = null;
    Number level = null;

    while (parser.nextToken() != JsonToken.END_OBJECT) {
        String key = parser.getCurrentName();

        if (key == null) {
            continue;
        }

        parser.nextToken();

        switch (key) {
        case "version":
            version = parser.getText();
            break;
        case "timestamp":
            timestamp = parser.getNumberValue();
            break;
        case "host":
            host = parser.getText();
            break;
        case "short_message":
            short_message = parser.getText();
            break;
        case "full_message":
            full_message = parser.getText();
            break;
        case "level":
            level = parser.getNumberValue();
            break;
        default:
            throw new Exception("Found unexpected field in JSON payload: " + key);
        }
    }

    assertEquals(message.getVersion().toString(), version);
    assertEquals(message.getTimestamp(), timestamp);
    assertEquals(message.getHost(), host);
    assertEquals(message.getMessage(), short_message);
    assertNull(full_message);
    assertNull(level);
}

From source file:org.helm.notation2.wsadapter.MonomerWSLoader.java

/**
 * Private routine to deserialize monomer Store JSON. This is done manually to
 * give more freedom regarding data returned by the webservice.
 *
 * @param parser the JSONParser containing JSONData.
 * @param attachmentDB the attachments stored in the Toolkit
 * @return Map containing monomers//from w  w  w  . ja  v  a  2  s.  c  o  m
 *
 * @throws JsonParseException
 * @throws IOException
 * @throws EncoderException
 */
private Map<String, Monomer> deserializeMonomerStore(JsonParser parser, Map<String, Attachment> attachmentDB)
        throws JsonParseException, IOException, EncoderException {
    Map<String, Monomer> monomers = new HashMap<String, Monomer>();
    Monomer currentMonomer = null;

    parser.nextToken();
    while (parser.hasCurrentToken()) {
        String fieldName = parser.getCurrentName();
        JsonToken token = parser.getCurrentToken();

        if (JsonToken.START_OBJECT.equals(token)) {
            currentMonomer = new Monomer();
        } else if (JsonToken.END_OBJECT.equals(token)) {
            monomers.put(currentMonomer.getAlternateId(), currentMonomer);
        }

        if (fieldName != null) {
            switch (fieldName) {
            // id is first field
            case "id":
                parser.nextToken();
                currentMonomer.setId(Integer.parseInt(parser.getText()));
                break;
            case "alternateId":
                parser.nextToken();
                currentMonomer.setAlternateId(parser.getText());
                break;
            case "naturalAnalog":
                parser.nextToken();
                currentMonomer.setNaturalAnalog(parser.getText());
                break;
            case "name":
                parser.nextToken();
                currentMonomer.setName(parser.getText());
                break;
            case "canSMILES":
                parser.nextToken();
                currentMonomer.setCanSMILES(parser.getText());
                break;
            case "molfile":
                parser.nextToken();
                currentMonomer.setMolfile(MolfileEncoder.decode(parser.getText()));
                break;
            case "monomerType":
                parser.nextToken();
                currentMonomer.setMonomerType(parser.getText());
                break;
            case "polymerType":
                parser.nextToken();
                currentMonomer.setPolymerType(parser.getText());
                break;
            case "attachmentList":
                currentMonomer.setAttachmentList(deserializeAttachmentList(parser, attachmentDB));
                break;
            case "newMonomer":
                parser.nextToken();
                currentMonomer.setNewMonomer(Boolean.parseBoolean(parser.getText()));
                break;
            case "adHocMonomer":
                parser.nextToken();
                currentMonomer.setAdHocMonomer(Boolean.parseBoolean(parser.getText()));
                break;
            default:
                break;
            }
        }
        parser.nextToken();
    }

    return monomers;
}

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

@Override
public UserName parseNames(final InputStream inputStream) {
    checkNotNull(inputStream);/* w  w  w.j a  v a 2 s .c  om*/
    JsonParser parser = null;
    try {
        parser = jsonFactory.createParser(inputStream);
        parser.nextToken();

        String id = null;
        String firstName = null;
        String lastName = null;
        String profileId = null;
        String profileFirstName = null;
        String profileLastName = null;
        List<ProfileName> profileNames = new ArrayList<ProfileName>();

        while (parser.nextToken() != JsonToken.END_OBJECT) {
            String field = parser.getCurrentName();
            parser.nextToken();
            if ("id".equals(field)) {
                id = parser.getText();
            } else if ("first_name".equals(field)) {
                firstName = parser.getText();
            } else if ("last_name".equals(field)) {
                lastName = parser.getText();
            } else if ("profiles".equals(field)) {
                while (parser.nextToken() != JsonToken.END_ARRAY) {
                    while (parser.nextToken() != JsonToken.END_OBJECT) {
                        String profileNameField = parser.getCurrentName();
                        parser.nextToken();
                        if ("id".equals(profileNameField)) {
                            profileId = parser.getText();
                        } else if ("first_name".equals(profileNameField)) {
                            profileFirstName = parser.getText();
                        } else if ("last_name".equals(profileNameField)) {
                            profileLastName = parser.getText();
                        }
                    }
                    profileNames.add(new ProfileName(profileId, profileFirstName, profileLastName));
                }
            }
        }
        return new UserName(id, firstName, lastName, profileNames);
    } catch (IOException e) {
        logger.warn("could not parse names", e);
    } finally {
        try {
            inputStream.close();
        } catch (Exception e) {
            // ignored
        }
        try {
            parser.close();
        } catch (Exception e) {
            // ignored
        }
    }
    return null;
}

From source file:com.concentricsky.android.khanacademy.data.remote.LibraryUpdaterTask.java

private ContentValues parseObject(JsonParser parser, SQLiteDatabase tempDb, String parentId, int seq)
        throws JsonParseException, IOException {
    // TODO : Grab id of root topic here, and store it in shared prefs, in case it ever
    //        changes. Currently we assume "root" and a change would be catastrophic.
    ContentValues result = new ContentValues();
    ChildArrayResults childResults = null;
    boolean badKind = false;

    result.put("parentTopic_id", parentId);
    result.put("seq", seq);

    while (parser.nextValue() != JsonToken.END_OBJECT) {

        // Allows us to burn through the rest of the object once we discover it's an exercise or something else we don't care about.
        if (badKind)
            continue;

        String fieldName = parser.getCurrentName();

        // Keys present will determine object type.
        if (stringFields.contains(fieldName)) {
            // Use getValueAsString over getText; getText returns "null" while getValueAsString returns null.
            String value = parser.getValueAsString();
            result.put(fieldName, value);

            if ("id".equals(fieldName)) {
                if (childResults != null) {
                    addParentIdToChildren(tempDb, childResults, value);
                }//from   w ww  . j a  v  a  2 s . com
            }
        } else if (intFields.contains(fieldName)) {
            result.put(fieldName, parser.getIntValue());
        } else if (booleanFields.contains(fieldName)) {
            result.put(fieldName, parser.getBooleanValue());
        } else if ("children".equals(fieldName)) {
            childResults = parseChildArray(parser, tempDb,
                    result.containsKey("id") ? result.getAsString("id") : null);
            result.put("video_count", childResults.videoCount);
            result.put("child_kind", childResults.childKind);
            result.put("thumb_id", childResults.thumbId);
        } else if ("download_urls".equals(fieldName)) {
            parseDownloadUrls(parser, result);
        } else if (null == fieldName) {
            // Noop. Just in case.
        } else {
            JsonToken next = parser.getCurrentToken();
            if (next == JsonToken.START_OBJECT || next == JsonToken.START_ARRAY) {
                // Skip this object or array, leaving us pointing at the matching end_object / end_array token.
                parser.skipChildren();
            }
        }
    }

    // Ignore types we don't need.
    if (badKind) {
        return null;
    }

    // Having parsed this whole object, we can insert it.
    if (result.containsKey("kind")) {
        String kind = result.getAsString("kind");
        if ("Topic".equals(kind)) {
            if (result.containsKey("id")) {
                result.put("_id", result.getAsString("id"));
                result.remove("id");
            }
            if (result.containsKey("child_kind")) {
                String child_kind = result.getAsString("child_kind");
                if ("Topic".equals(child_kind) || "Video".equals(child_kind)) {
                    insertTopic(tempDb, result);
                }
            }
        } else if ("Video".equals(kind)) {
            if (result.containsKey("id")) {
                result.put("video_id", result.getAsString("id"));
                result.remove("id");
            }
            insertTopicVideo(tempDb, result);
            insertVideo(tempDb, result);
        }
    }

    return result;
}

From source file:msearch.io.MSFilmlisteLesen.java

private boolean filmlisteJsonEinlesen(File vonDatei, ListeFilme listeFilme) {
    boolean ret = false;
    BZip2CompressorInputStream bZip2CompressorInputStream;
    JsonFactory jsonF = new JsonFactory();
    JsonParser jp = null;//  w  w w . j av a2 s  .  com
    JsonToken jsonToken;
    String sender = "", thema = "";
    try {
        // ##########################################################
        // und jetzt die Liste einlesen, URL kann es jetzt schon nicht mehr sein!
        if (!vonDatei.exists()) {
            MSLog.fehlerMeldung(702030698, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen",
                    "Datei existiert nicht: " + vonDatei.getName());
            return false;
        }
        if (vonDatei.getName().endsWith(MSConst.FORMAT_XZ)) {
            XZInputStream xZInputStream = new XZInputStream(new FileInputStream(vonDatei));
            jp = jsonF.createParser(new InputStreamReader(xZInputStream, MSConst.KODIERUNG_UTF));
        } else if (vonDatei.getName().endsWith(MSConst.FORMAT_BZ2)) {
            bZip2CompressorInputStream = new BZip2CompressorInputStream(new FileInputStream(vonDatei));
            jp = jsonF.createParser(new InputStreamReader(bZip2CompressorInputStream, MSConst.KODIERUNG_UTF));
        } else if (vonDatei.getName().endsWith(MSConst.FORMAT_ZIP)) {
            ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(vonDatei));
            zipInputStream.getNextEntry();
            jp = jsonF.createParser(new InputStreamReader(zipInputStream, MSConst.KODIERUNG_UTF));
        } else {
            jp = jsonF.createParser(vonDatei); // geht so am schnellsten
        }
        if (jp.nextToken() != JsonToken.START_OBJECT) {
            throw new IOException("Expected data to start with an Object");
        }
        while ((jsonToken = jp.nextToken()) != null) {
            if (jsonToken == JsonToken.END_OBJECT) {
                break;
            }
            if (jp.isExpectedStartArrayToken()) {
                for (int k = 0; k < ListeFilme.MAX_ELEM; ++k) {
                    listeFilme.metaDaten[k] = jp.nextTextValue();
                }
                break;
            }
        }
        while ((jsonToken = jp.nextToken()) != null) {
            if (jsonToken == JsonToken.END_OBJECT) {
                break;
            }
            if (jp.isExpectedStartArrayToken()) {
                // sind nur die Feldbeschreibungen, brauch mer nicht
                jp.nextToken();
                break;
            }
        }
        while ((jsonToken = jp.nextToken()) != null) {
            if (jsonToken == JsonToken.END_OBJECT) {
                break;
            }
            if (jp.isExpectedStartArrayToken()) {
                DatenFilm datenFilm = new DatenFilm();
                for (int i = 0; i < DatenFilm.COLUMN_NAMES_JSON.length; ++i) {
                    datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = jp.nextTextValue();
                    /// fr die Entwicklungszeit
                    if (datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] == null) {
                        datenFilm.arr[DatenFilm.COLUMN_NAMES_JSON[i]] = "";
                    }
                }
                if (datenFilm.arr[DatenFilm.FILM_SENDER_NR].equals("")) {
                    datenFilm.arr[DatenFilm.FILM_SENDER_NR] = sender;
                } else {
                    sender = datenFilm.arr[DatenFilm.FILM_SENDER_NR];
                }
                if (datenFilm.arr[DatenFilm.FILM_THEMA_NR].equals("")) {
                    datenFilm.arr[DatenFilm.FILM_THEMA_NR] = thema;
                } else {
                    thema = datenFilm.arr[DatenFilm.FILM_THEMA_NR];
                }
                listeFilme.importFilmliste(datenFilm);
            }
        }
        jp.close();
        ret = true;
    } catch (Exception ex) {
        MSLog.fehlerMeldung(468956200, MSLog.FEHLER_ART_PROG, "MSearchIoXmlFilmlisteLesen.filmlisteLesen", ex,
                "von: " + vonDatei.getName());
    }
    return ret;
}

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 .  ja v a 2 s  . com*/
        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");
        }
    }
}

From source file:de.undercouch.bson4jackson.BsonParser.java

@Override
public JsonToken nextToken() throws IOException, JsonParseException {
    Context ctx = _currentContext;
    if (_currToken == null && ctx == null) {
        try {/*from   w  ww  .  jav  a 2  s.  c o  m*/
            _currToken = handleNewDocument(false);
        } catch (EOFException e) {
            //there is nothing more to read. indicate EOF
            return null;
        }
    } else {
        _tokenPos = _counter.getPosition();
        if (ctx == null) {
            if (_currToken == JsonToken.END_OBJECT) {
                //end of input
                return null;
            }
            throw new JsonParseException("Found element outside the document", getTokenLocation());
        }

        if (ctx.state == State.DONE) {
            //next field
            ctx.reset();
        }

        boolean readValue = true;
        if (ctx.state == State.FIELDNAME) {
            readValue = false;
            while (true) {
                //read field name or end of document
                ctx.type = _in.readByte();
                if (ctx.type == BsonConstants.TYPE_END) {
                    //end of document
                    _currToken = (ctx.array ? JsonToken.END_ARRAY : JsonToken.END_OBJECT);
                    _currentContext = _currentContext.parent;
                } else if (ctx.type == BsonConstants.TYPE_UNDEFINED) {
                    //skip field name and then ignore this token
                    skipCString();
                    continue;
                } else {
                    ctx.state = State.VALUE;
                    _currToken = JsonToken.FIELD_NAME;

                    if (ctx.array) {
                        //immediately read value of array element (discard field name)
                        readValue = true;
                        skipCString();
                        ctx.fieldName = null;
                    } else {
                        //read field name
                        ctx.fieldName = readCString();
                    }
                }
                break;
            }
        }

        if (readValue) {
            //parse element's value
            switch (ctx.type) {
            case BsonConstants.TYPE_DOUBLE:
                ctx.value = _in.readDouble();
                _currToken = JsonToken.VALUE_NUMBER_FLOAT;
                break;

            case BsonConstants.TYPE_STRING:
                ctx.value = readString();
                _currToken = JsonToken.VALUE_STRING;
                break;

            case BsonConstants.TYPE_DOCUMENT:
                _currToken = handleNewDocument(false);
                break;

            case BsonConstants.TYPE_ARRAY:
                _currToken = handleNewDocument(true);
                break;

            case BsonConstants.TYPE_BINARY:
                _currToken = handleBinary();
                break;

            case BsonConstants.TYPE_OBJECTID:
                ctx.value = readObjectId();
                _currToken = JsonToken.VALUE_EMBEDDED_OBJECT;
                break;

            case BsonConstants.TYPE_BOOLEAN:
                boolean b = _in.readBoolean();
                ctx.value = b;
                _currToken = (b ? JsonToken.VALUE_TRUE : JsonToken.VALUE_FALSE);
                break;

            case BsonConstants.TYPE_DATETIME:
                ctx.value = new Date(_in.readLong());
                _currToken = JsonToken.VALUE_EMBEDDED_OBJECT;
                break;

            case BsonConstants.TYPE_NULL:
                _currToken = JsonToken.VALUE_NULL;
                break;

            case BsonConstants.TYPE_REGEX:
                _currToken = handleRegEx();
                break;

            case BsonConstants.TYPE_DBPOINTER:
                _currToken = handleDBPointer();
                break;

            case BsonConstants.TYPE_JAVASCRIPT:
                ctx.value = new JavaScript(readString());
                _currToken = JsonToken.VALUE_EMBEDDED_OBJECT;
                break;

            case BsonConstants.TYPE_SYMBOL:
                ctx.value = readSymbol();
                _currToken = JsonToken.VALUE_EMBEDDED_OBJECT;
                break;

            case BsonConstants.TYPE_JAVASCRIPT_WITH_SCOPE:
                _currToken = handleJavascriptWithScope();
                break;

            case BsonConstants.TYPE_INT32:
                ctx.value = _in.readInt();
                _currToken = JsonToken.VALUE_NUMBER_INT;
                break;

            case BsonConstants.TYPE_TIMESTAMP:
                ctx.value = readTimestamp();
                _currToken = JsonToken.VALUE_EMBEDDED_OBJECT;
                break;

            case BsonConstants.TYPE_INT64:
                ctx.value = _in.readLong();
                _currToken = JsonToken.VALUE_NUMBER_INT;
                break;

            case BsonConstants.TYPE_MINKEY:
                ctx.value = "MinKey";
                _currToken = JsonToken.VALUE_STRING;
                break;

            case BsonConstants.TYPE_MAXKEY:
                ctx.value = "MaxKey";
                _currToken = JsonToken.VALUE_STRING;
                break;

            default:
                throw new JsonParseException("Unknown element type " + ctx.type, getTokenLocation());
            }
            ctx.state = State.DONE;
        }
    }
    return _currToken;
}