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: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");
        }/*  w ww.j  ava2s.c  om*/
        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.addthis.codec.config.ConfigTraversingParser.java

@Override
public JsonToken nextToken() throws IOException, JsonParseException {
    if (_nextToken != null) {
        _currToken = _nextToken;//  ww w  .  j a  v a2s. c  o  m
        _nextToken = null;
        return _currToken;
    }
    // are we to descend to a container child?
    if (_startContainer) {
        _startContainer = false;
        // minor optimization: empty containers can be skipped
        if (!_nodeCursor.currentHasChildren()) {
            _currToken = (_currToken == JsonToken.START_OBJECT) ? JsonToken.END_OBJECT : JsonToken.END_ARRAY;
            return _currToken;
        }
        _nodeCursor = _nodeCursor.iterateChildren();
        _currToken = _nodeCursor.nextToken();
        if (_currToken == JsonToken.START_OBJECT || _currToken == JsonToken.START_ARRAY) {
            _startContainer = true;
        }
        currentConfig = currentNode();
        return _currToken;
    }
    // No more content?
    if (_nodeCursor == null) {
        _closed = true; // if not already set
        currentConfig = null;
        return null;
    }
    // Otherwise, next entry from current cursor
    _currToken = _nodeCursor.nextToken();
    if (_currToken != null) {
        currentConfig = currentNode();
        if (_currToken == JsonToken.START_OBJECT || _currToken == JsonToken.START_ARRAY) {
            _startContainer = true;
        }
        return _currToken;
    }
    // null means no more children; need to return end marker
    _currToken = _nodeCursor.endToken();
    _nodeCursor = _nodeCursor.getParent();
    currentConfig = currentNode();
    return _currToken;
}

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

private static HttpHost readHost(String nodeId, JsonParser parser, Scheme scheme) throws IOException {
    HttpHost httpHost = null;//w ww . j av  a2  s .c om
    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 boundAddressAsURI = URI.create(scheme + "://" + parser.getValueAsString());
                        httpHost = new HttpHost(boundAddressAsURI.getHost(), boundAddressAsURI.getPort(),
                                boundAddressAsURI.getScheme());
                    } else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
                        parser.skipChildren();
                    }
                }
            } else {
                parser.skipChildren();
            }
        }
    }
    //http section is not present if http is not enabled on the node, ignore such nodes
    if (httpHost == null) {
        logger.debug("skipping node [" + nodeId + "] with http disabled");
        return null;
    }
    return httpHost;
}

From source file:org.apache.lucene.server.handlers.BulkAddDocumentsHandler.java

@Override
public String handleStreamed(Reader reader, Map<String, List<String>> params) throws Exception {

    JsonFactory jfactory = new JsonFactory();

    JsonParser parser = jfactory.createJsonParser(reader);

    if (parser.nextToken() != JsonToken.START_OBJECT) {
        throw new IllegalArgumentException("expected JSON object");
    }/*  ww  w  .jav a2 s  .co  m*/
    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (!parser.getText().equals("indexName")) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (parser.nextToken() != JsonToken.VALUE_STRING) {
        throw new IllegalArgumentException("indexName should be string");
    }

    IndexState indexState = globalState.get(parser.getText());
    indexState.verifyStarted(null);
    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected documents next");
    }
    if (!parser.getText().equals("documents")) {
        throw new IllegalArgumentException("expected documents after indexName");
    }

    ShardState shardState = indexState.getShard(0);

    if (parser.nextToken() != JsonToken.START_ARRAY) {
        throw new IllegalArgumentException("documents should be a list");
    }

    int count = 0;
    IndexingContext ctx = new IndexingContext();

    AddDocumentHandler addDocHandler = (AddDocumentHandler) globalState.getHandler("addDocument");

    // Parse as many doc blocks as there are:
    while (true) {

        List<Document> children = null;
        Document parent = null;

        JsonToken token = parser.nextToken();
        if (token == JsonToken.END_ARRAY) {
            break;
        }
        if (token != JsonToken.START_OBJECT) {
            throw new IllegalArgumentException("expected object");
        }

        // Parse parent + children for this one doc block:
        while (true) {
            token = parser.nextToken();
            if (token == JsonToken.END_OBJECT) {
                // Done with parent + child in this block
                break;
            }
            if (token != JsonToken.FIELD_NAME) {
                throw new IllegalArgumentException("missing field name: " + token);
            }
            String f = parser.getText();
            if (f.equals("children")) {
                token = parser.nextToken();
                if (token != JsonToken.START_ARRAY) {
                    throw new IllegalArgumentException("expected array for children");
                }

                children = new ArrayList<Document>();

                // Parse each child:
                while (true) {
                    Document doc = addDocHandler.parseDocument(indexState, parser);
                    if (doc == null) {
                        break;
                    }
                    children.add(doc);
                }
            } else if (f.equals("parent")) {
                parent = addDocHandler.parseDocument(indexState, parser);
            } else {
                throw new IllegalArgumentException("unrecognized field name \"" + f + "\"");
            }
        }

        if (parent == null) {
            throw new IllegalArgumentException("missing parent");
        }
        if (children == null) {
            throw new IllegalArgumentException("missing children");
        }

        // Parent is last:
        children.add(parent);

        globalState.submitIndexingTask(shardState.getAddDocumentsJob(count, null, children, ctx));
        count++;
    }

    // nocommit this is ... lameish:
    while (true) {
        if (ctx.addCount.get() == count) {
            break;
        }
        Thread.sleep(1);
    }

    Throwable t = ctx.getError();
    if (t != null) {
        IOUtils.reThrow(t);
    }

    JSONObject o = new JSONObject();
    o.put("indexGen", shardState.writer.getMaxCompletedSequenceNumber());
    o.put("indexedDocumentBlockCount", count);
    return o.toString();
}

From source file:org.apache.lucene.server.handlers.BulkUpdateDocumentHandler.java

@Override
public String handleStreamed(Reader reader, Map<String, List<String>> params) throws Exception {
    JsonFactory jfactory = new JsonFactory();

    JsonParser parser = jfactory.createJsonParser(reader);

    if (parser.nextToken() != JsonToken.START_OBJECT) {
        throw new IllegalArgumentException("expected JSON object");
    }//from   w ww  . j a  v  a2s.c  o  m
    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (!parser.getText().equals("indexName")) {
        throw new IllegalArgumentException("expected indexName first");
    }
    if (parser.nextToken() != JsonToken.VALUE_STRING) {
        throw new IllegalArgumentException("indexName should be string");
    }

    IndexState indexState = globalState.get(parser.getText());
    indexState.verifyStarted(null);

    ShardState shardState = indexState.getShard(0);

    if (parser.nextToken() != JsonToken.FIELD_NAME) {
        throw new IllegalArgumentException("expected documents next");
    }
    if (!parser.getText().equals("documents")) {
        throw new IllegalArgumentException("expected documents after indexName");
    }
    if (parser.nextToken() != JsonToken.START_ARRAY) {
        throw new IllegalArgumentException("documents should be a list");
    }

    IndexingContext ctx = new IndexingContext();

    AddDocumentHandler addDocHandler = (AddDocumentHandler) globalState.getHandler("addDocument");

    // Parse any number of documents to update:
    int count = 0;

    while (true) {
        JsonToken token = parser.nextToken();
        if (token == JsonToken.END_ARRAY) {
            break;
        }
        if (token != JsonToken.START_OBJECT) {
            throw new IllegalArgumentException("missing object");
        }

        // Parse term: and fields:
        Term updateTerm = null;

        final Document doc = new Document();

        while (true) {
            token = parser.nextToken();
            if (token == JsonToken.END_OBJECT) {
                break;
            }
            if (token != JsonToken.FIELD_NAME) {
                throw new IllegalArgumentException("missing field name");
            }
            String f = parser.getText();
            if (f.equals("term")) {
                if (parser.nextToken() != JsonToken.START_OBJECT) {
                    throw new IllegalArgumentException("missing object");
                }

                // TODO: allow field to be specified only once, then
                // only text per document

                String field = null, term = null;

                while (parser.nextToken() != JsonToken.END_OBJECT) {
                    String f2 = parser.getText();
                    if (f2.equals("field")) {
                        if (parser.nextToken() != JsonToken.VALUE_STRING) {
                            throw new IllegalArgumentException("missing string value");
                        }
                        field = parser.getText();
                        // Ensure field is valid:
                        indexState.getField(field);
                    } else if (f2.equals("term")) {
                        if (parser.nextToken() != JsonToken.VALUE_STRING) {
                            throw new IllegalArgumentException("missing string value");
                        }
                        term = parser.getText();
                    } else {
                        throw new IllegalArgumentException("unexpected field " + f);
                    }
                }
                updateTerm = new Term(field, term);
            } else if (f.equals("fields")) {
                addDocHandler.parseFields(indexState, doc, parser);
            } else {
                boolean handled = false;
                for (AddDocumentHandler.PostHandle postHandle : addDocHandler.postHandlers) {
                    if (postHandle.invoke(indexState, f, parser, doc)) {
                        handled = true;
                        break;
                    }
                }
                if (!handled) {
                    throw new IllegalArgumentException("unrecognized field " + parser.getText());
                }
            }
        }

        if (updateTerm == null) {
            throw new IllegalArgumentException("missing term");
        }

        // TODO: this is dup'd code ... share better w/ AddDocHandler
        globalState.submitIndexingTask(shardState.getAddDocumentJob(count, updateTerm, doc, ctx));
        count++;
    }

    // nocommit this is ... lameish:
    while (true) {
        if (ctx.addCount.get() == count) {
            break;
        }
        Thread.sleep(1);
    }

    JSONObject o = new JSONObject();
    o.put("indexGen", shardState.writer.getMaxCompletedSequenceNumber());
    o.put("indexedDocumentCount", count);
    return o.toString();
}

From source file:com.cedarsoft.serialization.serializers.jackson.FileTypeSerializer.java

@Nonnull
@Override/* www  . j  ava2s  .  c  o m*/
public FileType deserialize(@Nonnull JsonParser deserializeFrom, @Nonnull Version formatVersion)
        throws VersionException, IOException, JsonProcessingException {
    JacksonParserWrapper parserWrapper = new JacksonParserWrapper(deserializeFrom);
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName2 = parserWrapper.getCurrentName();

    if (!PROPERTY_ID.equals(currentName2)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_ID + "> but was <" + currentName2 + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String id = parserWrapper.getText();
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName1 = parserWrapper.getCurrentName();

    if (!PROPERTY_DEPENDENT_TYPE.equals(currentName1)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_DEPENDENT_TYPE + "> but was <" + currentName1 + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    boolean dependentType = parserWrapper.getBooleanValue();
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName = parserWrapper.getCurrentName();

    if (!PROPERTY_CONTENT_TYPE.equals(currentName)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_CONTENT_TYPE + "> but was <" + currentName + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String contentType = parserWrapper.getText();
    List<? extends Extension> extensions = deserializeArray(Extension.class, PROPERTY_EXTENSIONS,
            deserializeFrom, formatVersion);

    parserWrapper.nextToken(JsonToken.END_OBJECT);
    return new FileType(id, contentType, dependentType, extensions);
}

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

@Test
public void testParse() throws Exception {
    JsonParser parser = jsonFactory.createJsonParser(JSON);

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

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

    assertEquals(JsonToken.FIELD_NAME, parser.nextToken());
    assertEquals("dependent", parser.getCurrentName());
    assertEquals(JsonToken.VALUE_FALSE, parser.nextToken());
    assertFalse(parser.getBooleanValue());

    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());
    assertEquals("cr2", parser.getText());

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

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

    assertEquals(JsonToken.END_OBJECT, parser.nextToken());
    assertEquals(JsonToken.END_OBJECT, parser.nextToken());
    assertNull(parser.nextToken());/*from   www .  j  ava 2  s  .c om*/
}

From source file:mSearch.filmlisten.FilmlisteLesen.java

public void readFilmListe(String source, final ListeFilme listeFilme, int days) {
    Log.sysLog("Liste Filme lesen von: " + source);
    JsonToken jsonToken;// www . j av a2 s .  c o m
    String sender = "", thema = "";
    listeFilme.clear();
    this.notifyStart(source, PROGRESS_MAX); // fr die Progressanzeige

    if (days > 0) {
        final long maxDays = 1000L * 60L * 60L * 24L * days;
        seconds = new Date().getTime() - maxDays;
    } else {
        seconds = 0;
    }

    try (InputStream in = selectDecompressor(source, getInputStreamForLocation(source));
            JsonParser jp = new JsonFactory().createParser(in)) {

        if (jp.nextToken() != JsonToken.START_OBJECT) {
            throw new IllegalStateException("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 (!Config.getStop() && (jsonToken = jp.nextToken()) != null) {
            if (jsonToken == JsonToken.END_OBJECT) {
                break;
            }
            if (jp.isExpectedStartArrayToken()) {
                DatenFilm datenFilm = new DatenFilm();
                for (int i = 0; i < DatenFilm.JSON_NAMES.length; ++i) {
                    //if we are in FASTAUTO mode, we dont need film descriptions.
                    //this should speed up loading on low end devices...
                    if (workMode == WorkMode.FASTAUTO) {
                        if (DatenFilm.JSON_NAMES[i] == DatenFilm.FILM_BESCHREIBUNG
                                || DatenFilm.JSON_NAMES[i] == DatenFilm.FILM_WEBSEITE
                                || DatenFilm.JSON_NAMES[i] == DatenFilm.FILM_GEO) {
                            jp.nextToken();
                            continue;
                        }
                    }

                    //                        if (DatenFilm.JSON_NAMES[i] ==  DatenFilm.FILM_TITEL) {
                    //                            //convert UNICODE et al to java strings.
                    //                            datenFilm.arr[DatenFilm.JSON_NAMES[i]] = StringEscapeUtils.unescapeJava(jp.nextTextValue());
                    //                        } else 
                    if (DatenFilm.JSON_NAMES[i] == DatenFilm.FILM_NEU) {
                        final String value = jp.nextTextValue();
                        //This value is unused...
                        //datenFilm.arr[DatenFilm.FILM_NEU_NR] = value;
                        datenFilm.setNew(Boolean.parseBoolean(value));
                    } else {
                        datenFilm.arr[DatenFilm.JSON_NAMES[i]] = jp.nextTextValue();
                    }

                    /// fr die Entwicklungszeit
                    if (datenFilm.arr[DatenFilm.JSON_NAMES[i]] == null) {
                        datenFilm.arr[DatenFilm.JSON_NAMES[i]] = "";
                    }
                }
                if (datenFilm.arr[DatenFilm.FILM_SENDER].isEmpty()) {
                    datenFilm.arr[DatenFilm.FILM_SENDER] = sender;
                } else {
                    sender = datenFilm.arr[DatenFilm.FILM_SENDER];
                }
                if (datenFilm.arr[DatenFilm.FILM_THEMA].isEmpty()) {
                    datenFilm.arr[DatenFilm.FILM_THEMA] = thema;
                } else {
                    thema = datenFilm.arr[DatenFilm.FILM_THEMA];
                }

                listeFilme.importFilmliste(datenFilm);
                if (seconds > 0) {
                    // muss "rckwrts" laufen, da das Datum sonst 2x gebaut werden muss
                    // wenns drin bleibt, kann mans noch ndern
                    if (!checkDate(datenFilm)) {
                        listeFilme.remove(datenFilm);
                    }
                }
            }
        }
    } catch (FileNotFoundException ex) {
        Log.errorLog(894512369, "FilmListe existiert nicht: " + source);
        listeFilme.clear();
    } catch (Exception ex) {
        Log.errorLog(945123641, ex, "FilmListe: " + source);
        listeFilme.clear();
    }

    if (Config.getStop()) {
        Log.sysLog("--> Abbruch");
        listeFilme.clear();
    }
    notifyFertig(source, listeFilme);
}

From source file:io.apiman.manager.api.exportimport.json.JsonImportReader.java

public void readOrgs() throws Exception {
    current = nextToken();//from w ww .jav  a2 s  .c  om
    if (current == JsonToken.END_ARRAY) {
        return;
    }
    while (nextToken() != JsonToken.END_ARRAY) {
        // Traverse each org definition
        while (nextToken() != JsonToken.END_OBJECT) {
            if (jp.getCurrentName().equals(OrganizationBean.class.getSimpleName())) {
                current = nextToken();
                OrganizationBean orgBean = jp.readValueAs(OrganizationBean.class);
                dispatcher.organization(orgBean);
            } else {
                OrgElementsEnum fieldName = OrgElementsEnum.valueOf(jp.getCurrentName());
                current = nextToken();

                switch (fieldName) {
                case Memberships:
                    processEntities(RoleMembershipBean.class, dispatcher::membership);
                    break;
                case Plans:
                    readPlans();
                    break;
                case Apis:
                    readApis();
                    break;
                case Clients:
                    readClients();
                    break;
                case Audits:
                    processEntities(AuditEntryBean.class, dispatcher::audit);
                    break;
                default:
                    throw new RuntimeException("Unhandled entity " + fieldName + " with token " + current);
                }
            }
        }
    }
}