List of usage examples for com.fasterxml.jackson.core JsonParser nextToken
public abstract JsonToken nextToken() throws IOException, JsonParseException;
From source file:org.mashti.jetson.json.JsonRequestDecoder.java
@Override protected Object[] decodeMethodArguments(final ChannelHandlerContext context, final ByteBuf buffer, final Method method) throws RPCException { final JsonParser parser = context.channel().attr(PARSER_ATTRIBUTE_KEY).get(); try {/* www . j av a 2 s. co m*/ final Object[] arguments = readArguments(parser, method); parser.nextToken(); return arguments; } catch (final JsonParseException e) { LOGGER.debug("failed to parse request", e); throw new InvalidRequestException(e); } catch (final JsonGenerationException e) { LOGGER.debug("failed to generate request", e); throw new ParseException(e); } catch (final IOException e) { LOGGER.debug("IO error occurred while decoding response", e); throw new TransportException(e); } }
From source file:org.apache.usergrid.chop.api.RunnerDeserializer.java
@Override public Runner deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException { RunnerBuilder builder = new RunnerBuilder(); String tmp = jp.getText();//from ww w .j av a2s . com validate(jp, tmp, "{"); LOG.debug("First token is {}", tmp); jp.nextToken(); tmp = jp.getText(); LOG.debug("Second token is {}", tmp); while (jp.hasCurrentToken()) { tmp = jp.getText(); LOG.debug("Current token text = {}", tmp); if (tmp.equals("ipv4Address")) { jp.nextToken(); builder.setIpv4Address(jp.getText()); } else if (tmp.equals("hostname")) { jp.nextToken(); builder.setHostname(jp.getText()); } else if (tmp.equals("url")) { jp.nextToken(); builder.setUrl(jp.getText()); } else if (tmp.equals("serverPort")) { jp.nextToken(); builder.setServerPort(jp.getValueAsInt()); } else if (tmp.equals("tempDir")) { jp.nextToken(); builder.setTempDir(jp.getText()); } jp.nextToken(); if (jp.getText().equals("}")) { break; } } return builder.getRunner(); }
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"); }/* w w w . j ava 2s . 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); 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:com.wealdtech.jackson.modules.MessageObjectsDeserializer.java
@Override public MessageObjects<? extends Object> deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException { // This assumes a strict JSON format of userId and hint followed by _type followed by prior and current (if they exist) jp.nextToken(); String fieldName = jp.getCurrentName(); if (!"userid".equals(fieldName)) { throw new IOException("Unexpected key \"" + fieldName + "\"; expected userid"); }//w w w . j a v a 2 s .com jp.nextToken(); final Long userId = Long.parseLong(jp.getText()); final RequestHint hint; jp.nextToken(); fieldName = jp.getCurrentName(); if ("hint".equals(fieldName)) { // Hint is optional jp.nextToken(); hint = WealdMapper.getMapper().readValue(jp, RequestHint.class); jp.nextToken(); } else { hint = null; } fieldName = jp.getCurrentName(); if (!"_type".equals(fieldName)) { throw new IOException("Unexpected key \"" + fieldName + "\"; expected _type"); } jp.nextToken(); final String typeStr = jp.getText(); Class<? extends Object> objClass; try { objClass = Class.forName(typeStr); } catch (ClassNotFoundException cnfe) { LOGGER.error("MessageObjects has unknown class: \"{}\"", typeStr); throw new IOException("MessageObjects has unknown class: \"" + typeStr + "\"", cnfe); } // Now that we have the type we can deserialize the objects jp.nextToken(); fieldName = jp.getCurrentName(); Object prior = null; if ("prior".equals(fieldName)) { jp.nextToken(); prior = WealdMapper.getMapper().readValue(jp, objClass); jp.nextToken(); fieldName = jp.getCurrentName(); } Object current = null; if ("current".equals(fieldName)) { jp.nextToken(); current = WealdMapper.getMapper().readValue(jp, objClass); } // And build our return object try { return new MessageObjects<>(userId, hint, prior, current); } catch (DataError de) { LOGGER.error("Failed to instantiate MessageObjects: \"" + de.getLocalizedMessage() + "\""); throw new IOException("Failed to instantiate MessageObjects", de); } }
From source file:com.adobe.communities.ugc.migration.importer.ScoresImportServlet.java
/** * The post operation accepts a json file, parses it and applies the profile scores to local profiles * @param request - the request//from ww w. j av a 2 s .c o m * @param response - the response * @throws javax.servlet.ServletException * @throws java.io.IOException */ protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException { final ResourceResolver resolver = request.getResourceResolver(); UGCImportHelper.checkUserPrivileges(resolver, rrf); final RequestParameter[] fileRequestParameters = request.getRequestParameters("file"); if (fileRequestParameters != null && fileRequestParameters.length > 0 && !fileRequestParameters[0].isFormField() && fileRequestParameters[0].getFileName().endsWith(".json")) { final InputStream inputStream = fileRequestParameters[0].getInputStream(); final JsonParser jsonParser = new JsonFactory().createParser(inputStream); JsonToken token = jsonParser.nextToken(); // get the first token if (token.equals(JsonToken.START_OBJECT)) { try { final UserPropertiesManager userManager = userPropertiesService .createUserPropertiesManager(resolver); importFile(jsonParser, userManager, resolver); } catch (RepositoryException e) { throw new ServletException("Unable to communicate with Jcr repository", e); } catch (final Exception e) { throw new ServletException("Problem!", e); } } else { throw new ServletException("Expected a start object token, got " + token); } } else { throw new ServletException("Expected to get a json file in post request"); } }
From source file:com.basistech.rosette.dm.jackson.array.ListAttributeArrayDeserializer.java
@Override @SuppressWarnings("unchecked") public ListAttribute deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { if (jp.getCurrentToken() == JsonToken.START_ARRAY) { // this is what we expect. // we advance to be in the same place the 'else' will be -- the first FIELD_NAME. jp.nextToken(); } else {/* w w w.j a v a 2 s.c o m*/ throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "ListAttributeDeserializer called not array start."); } if (jp.getCurrentToken() != JsonToken.VALUE_STRING) { throw ctxt.mappingException("Expected VALUE_STRING for item type."); } String itemTypeKeyName = jp.getText(); KnownAttribute attribute = KnownAttribute.getAttributeForKey(itemTypeKeyName); if (attribute == null) { attribute = KnownAttribute.UNKNOWN; } Class<? extends BaseAttribute> itemClass = attribute.attributeClass(); ListAttribute.Builder<BaseAttribute> builder = new ListAttribute.Builder<>(attribute.attributeClass()); List<BaseAttribute> items = Lists.newArrayList(); if (jp.nextToken() != JsonToken.START_ARRAY) { throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "No array of values for list."); } // we just read the elements as we see them, while (jp.nextToken() != JsonToken.END_ARRAY) { // the START_ARRAY case, which is _normal_. Read the elements. items.add(jp.readValueAs(itemClass)); } builder.setItems(items); // we are still in the top-level array ... if (jp.nextToken() != JsonToken.START_OBJECT) { throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT, "No extended properties for list."); } Map<String, Object> props = jp.readValueAs(new TypeReference<Map<String, Object>>() { }); for (Map.Entry<String, Object> me : props.entrySet()) { builder.extendedProperty(me.getKey(), me.getValue()); } jp.nextToken(); // consume the END_OBJECT of the extended props return builder.build(); }
From source file:com.cedarsoft.serialization.jackson.ListSerializer.java
@Nonnull @Override//from ww w. j a v a 2 s . c o m public List<? extends Object> deserialize(@Nonnull JsonParser deserializeFrom, @Nonnull Version formatVersion) throws IOException, VersionException, JsonProcessingException { List<Object> deserialized = new ArrayList<Object>(); int index = 0; while (deserializeFrom.nextToken() != JsonToken.END_ARRAY) { deserialized.add(deserializeElement(deserializeFrom, index)); index++; } return deserialized; }
From source file:org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService.java
/** * Helper method to decode an object recursively. * * @param parser the JSON parser with the content. * @param target the target where the content should be stored. * * @throws IOException//from w ww .j a v a 2s . c o m * @returns the decoded object. */ private CouchbaseDocument decodeObject(final JsonParser parser, final CouchbaseDocument target) throws IOException { JsonToken currentToken = parser.nextToken(); String fieldName = ""; while (currentToken != null && currentToken != JsonToken.END_OBJECT) { if (currentToken == JsonToken.START_OBJECT) { target.put(fieldName, decodeObject(parser, new CouchbaseDocument())); } else if (currentToken == JsonToken.START_ARRAY) { target.put(fieldName, decodeArray(parser, new CouchbaseList())); } else if (currentToken == JsonToken.FIELD_NAME) { fieldName = parser.getCurrentName(); } else { target.put(fieldName, decodePrimitive(currentToken, parser)); } currentToken = parser.nextToken(); } return target; }
From source file:com.kaaprotech.satu.jackson.SatuDeserializers.java
@Override public JsonDeserializer<?> findMapDeserializer(final MapType type, final DeserializationConfig config, BeanDescription beanDesc, final KeyDeserializer keyDeserializer, final TypeDeserializer elementTypeDeserializer, final JsonDeserializer<?> elementDeserializer) throws JsonMappingException { if (ImmutableMap.class.isAssignableFrom(type.getRawClass())) { return new StdDeserializer<Object>(type) { private static final long serialVersionUID = 1L; @Override/*w w w . jav a 2 s . co m*/ public Object deserialize(JsonParser jp, DeserializationContext context) throws IOException { JsonToken t = jp.getCurrentToken(); if (t == JsonToken.START_OBJECT) { t = jp.nextToken(); } if (t != JsonToken.FIELD_NAME && t != JsonToken.END_OBJECT) { throw context.mappingException(type.getRawClass()); } MutableMap<Object, Object> m = Maps.mutable.of(); for (; jp.getCurrentToken() == JsonToken.FIELD_NAME; jp.nextToken()) { // Pointing to field name String fieldName = jp.getCurrentName(); Object key = (keyDeserializer == null) ? fieldName : keyDeserializer.deserializeKey(fieldName, context); t = jp.nextToken(); Object value; if (t == JsonToken.VALUE_NULL) { value = null; } else if (elementDeserializer == null) { value = jp.readValueAs(type.getContentType().getRawClass()); } else if (elementTypeDeserializer == null) { value = elementDeserializer.deserialize(jp, context); } else { value = elementDeserializer.deserializeWithType(jp, context, elementTypeDeserializer); } m.put(key, value); } return m.toImmutable(); } }; } return super.findMapDeserializer(type, config, beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer); }
From source file:org.emfjson.jackson.streaming.StreamReader.java
protected void readAttribute(JsonParser parser, EAttribute attribute, EObject owner) throws IOException { final JsonToken token = parser.nextToken(); if (token == JsonToken.START_ARRAY) { while (parser.nextToken() != JsonToken.END_ARRAY) { EObjects.setOrAdd(owner, attribute, parser.getText()); }//from w w w .j av a2 s. c om } else { EObjects.setOrAdd(owner, attribute, parser.getText()); } }