List of usage examples for com.fasterxml.jackson.core JsonParser getText
public abstract String getText() throws IOException, JsonParseException;
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(); }