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.messic.server.api.tagwizard.discogs.DiscogsTAGWizardPlugin.java

private Album getAlbum(String id) {
    String baseURL = "http://api.discogs.com/releases/" + id;
    try {/*from w w w.  j  a  v  a  2s .c om*/
        URL url = new URL(baseURL);
        Proxy proxy = getProxy();
        URLConnection uc = (proxy != null ? url.openConnection(proxy) : url.openConnection());
        uc.setRequestProperty("User-Agent", "Messic/1.0 +http://spheras.github.io/messic/");

        Album album = new Album();

        album.name = "";
        album.author = "";
        album.comments = "Info obtained by Discogs provider (http://www.discogs.com/)";
        album.year = 1900;
        album.genre = "";

        JsonFactory jsonFactory = new JsonFactory(); // or, for data binding,
        JsonParser jParser = jsonFactory.createParser(uc.getInputStream());
        while (jParser.nextToken() != null) {
            String fieldname = jParser.getCurrentName();
            if ("title".equals(fieldname)) {
                jParser.nextToken();
                album.name = jParser.getText();
            }
            if ("year".equals(fieldname)) {
                jParser.nextToken();
                try {
                    album.year = Integer.valueOf(jParser.getText());
                } catch (Exception e) {
                    album.year = 0;
                }
            }
            if ("notes".equals(fieldname)) {
                jParser.nextToken();
                album.comments = jParser.getText();
            }
            if ("genres".equals(fieldname)) {
                jParser.nextToken();
                jParser.nextToken();
                album.genre = jParser.getText();
                do {
                    jParser.nextToken();
                } while (!"genres".equals(jParser.getCurrentName()));
            }
            if ("artists".equals(fieldname)) {
                jParser.nextToken();
                while (!"name".equals(jParser.getCurrentName())) {
                    jParser.nextToken();
                }
                jParser.nextToken();
                album.author = jParser.getText();
                do {
                    jParser.nextToken();
                } while (!"artists".equals(jParser.getCurrentName()));
            }

            if ("tracklist".equals(fieldname)) {
                album.songs = new ArrayList<Song>();
                do {
                    Song newsong = new Song();
                    int tracknumber = 1;
                    while (jParser.nextToken() != JsonToken.END_OBJECT) {
                        String trackfieldname = jParser.getCurrentName();

                        if ("extraartists".equals(trackfieldname)) {
                            do {
                                while (jParser.nextToken() != JsonToken.END_OBJECT) {

                                }
                                jParser.nextToken();
                            } while (!"extraartists".equals(jParser.getCurrentName()));
                        }
                        if ("position".equals(trackfieldname)) {
                            jParser.nextToken();
                            try {
                                newsong.track = Integer.valueOf(jParser.getText());
                            } catch (Exception e) {
                                newsong.track = tracknumber;
                            }
                            tracknumber++;
                        }
                        if ("title".equals(trackfieldname)) {
                            jParser.nextToken();
                            newsong.name = jParser.getText();
                        }
                    }
                    album.songs.add(newsong);
                    jParser.nextToken();
                } while (!"tracklist".equals(jParser.getCurrentName()));
                jParser.nextToken();
            }
        }

        return album;
    } catch (Exception e) {
        log.error("failed!", e);
    }

    return null;
}

From source file:org.oscim.tiling.source.geojson.GeoJsonTileDecoder.java

private void parseProperties(JsonParser jp) throws JsonParseException, IOException {
    for (JsonToken t; (t = jp.nextToken()) != null;) {
        if (t == FIELD_NAME) {
            String text = jp.getCurrentName();

            t = jp.nextToken();//from ww w. jav  a2  s.  com
            if (t == VALUE_STRING) {
                mTagMap.put(text, jp.getText());
            } else if (t == VALUE_NUMBER_INT) {
                mTagMap.put(text, jp.getNumberValue());
            }
            continue;
        }
        if (t == END_OBJECT)
            break;
    }
}

From source file:KV78Tester.java

public void checkStop(JsonParser jp, String line, int userStopOrder) throws JsonParseException, IOException {
    boolean hasTown = false, hasName = false;
    String timingPoint = "";
    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String namefield = jp.getCurrentName();
        jp.nextToken();//from   w ww .  ja v a  2 s  .co  m
        if ("Town".equals(namefield)) {
            hasTown = true;
        }
        if ("Name".equals(namefield)) {
            hasName = true;
        }
        if ("TimingPointCode".equals(namefield)) {
            timingPoint = jp.getText();
        }
    }
    if (!hasTown && !hasName)
        System.out.println(String.format("Line %s misses townname and stopname for stopnumer %d, TPC %s", line,
                userStopOrder, timingPoint));
    else if (!hasTown)
        System.out.println(String.format("Line %s misses townname for stopnumer %d, TPC %s", line,
                userStopOrder, timingPoint));
    else if (!hasName)
        System.out.println(String.format("Line %s misses stopname for stopnumer %d, TPC %s", line,
                userStopOrder, timingPoint));
}

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

public ClientCredential jsonToClientCredential(JsonParser jp) throws ParseException, IOException {
    ClientCredential.Builder builder = ClientCredential.builder();

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

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

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

        } 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) && "redirectUri".equals(jp.getCurrentName())) {
            jp.nextToken();
            String uri = jp.getText();

            // verify uri by uri regex
            Pattern emailPattern = Pattern.compile(URI_PATTERN);
            if (!emailPattern.matcher(uri).matches()) {
                // bail out
                throw new ParseException("uri is not valid");
            }
            builder.buildRedirectUri(uri);
        } else if (JsonToken.FIELD_NAME.equals(token) && "clientId".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildClientId(jp.getText());
        } else if (JsonToken.FIELD_NAME.equals(token) && "clientSecret".equals(jp.getCurrentName())) {
            jp.nextToken();
            builder.buildClientSecret(jp.getText());
        }
    }
    return builder.buildAll();
}

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");
    }/*  w w  w. jav a2  s . c  om*/
    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: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 a 2s  .  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.sdl.odata.unmarshaller.json.core.JsonProcessor.java

/**
 * Parse the complex values.// w  w w . jav a2s .  c o m
 *
 * @param jsonParser the parser
 * @return list of parsed result objects
 * @throws IOException If unable to read input parser
 */
private List<Object> getCollectionValue(JsonParser jsonParser) throws IOException {
    LOG.info("Start parsing {} array", jsonParser.getCurrentName());
    List<Object> list = new ArrayList<>();
    while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
            Object embedded = getEmbeddedObject(jsonParser);
            list.add(embedded);
        }
        if (!"}".equals(jsonParser.getText())) {
            list.add(jsonParser.getText());
        } else {
            LOG.info("Array is over.");
        }
    }
    return list;
}

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

@Nonnull
public ActionFailedException deserialize(int status, @Nonnull InputStream in)
        throws VersionException, IOException {
    try (MaxLengthByteArrayOutputStream teedOut = new MaxLengthByteArrayOutputStream();
            TeeInputStream teeInputStream = new TeeInputStream(in, teedOut)) {

        JsonFactory jsonFactory = JacksonSupport.getJsonFactory();

        JsonParser parser = jsonFactory.createJsonParser(teeInputStream);
        JacksonParserWrapper parserWrapper = new JacksonParserWrapper(parser);

        parserWrapper.nextToken(JsonToken.START_OBJECT);

        String error = null;/*from   w  w  w.ja  v  a  2s  . c  o  m*/
        String reason = null;

        while (parser.nextToken() == JsonToken.FIELD_NAME) {
            String currentName = parser.getCurrentName();

            if (currentName.equals(PROPERTY_ERROR)) {
                parserWrapper.nextToken(JsonToken.VALUE_STRING);
                error = parser.getText();
                continue;
            }

            if (currentName.equals(PROPERTY_REASON)) {
                parserWrapper.nextToken(JsonToken.VALUE_STRING);
                reason = parser.getText();
                continue;
            }

            throw new IllegalStateException("Unexpected field reached <" + currentName + ">");
        }

        parserWrapper.verifyDeserialized(error, PROPERTY_ERROR);
        parserWrapper.verifyDeserialized(reason, PROPERTY_REASON);
        assert reason != null;
        assert error != null;

        parserWrapper.ensureObjectClosed();

        return new ActionFailedException(status, error, reason, teedOut.toByteArray());
    }
}

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 w  w . j  a va 2s  . co  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.apache.lucene.server.handlers.BulkUpdateDocumentsHandler.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");
    }//  www.  j a v a  2  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");
    }

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

    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;
        Term updateTerm = null;

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

        // Parse term + 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("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("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, updateTerm, 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();
}