Example usage for com.fasterxml.jackson.core JsonParser nextToken

List of usage examples for com.fasterxml.jackson.core JsonParser nextToken

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonParser nextToken.

Prototype

public abstract JsonToken nextToken() throws IOException, JsonParseException;

Source Link

Document

Main iteration method, which will advance stream enough to determine type of the next token, if any.

Usage

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());
    }
}