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.emfjson.jackson.tests.custom.CustomDeserializersTest.java

@Test
public void testDeserializeReferenceAsStrings() throws JsonProcessingException {
    EMFModule module = new EMFModule();
    module.configure(EMFModule.Feature.OPTION_USE_ID, true);
    module.configure(EMFModule.Feature.OPTION_SERIALIZE_TYPE, false);

    module.setReferenceDeserializer(new JsonDeserializer<ReferenceEntry>() {
        @Override//from w ww .j  av a  2 s .c o  m
        public ReferenceEntry deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
            final EObject parent = EMFContext.getParent(ctxt);
            final EReference reference = EMFContext.getReference(ctxt);

            if (p.getCurrentToken() == JsonToken.FIELD_NAME) {
                p.nextToken();
            }

            return new ReferenceEntry.Base(parent, reference, p.getText());
        }
    });

    mapper.registerModule(module);

    JsonNode data = mapper.createArrayNode()
            .add(mapper.createObjectNode().put("@id", "1").put("name", "Paul").put("uniqueFriend", "2"))
            .add(mapper.createObjectNode().put("@id", "2").put("name", "Franck"));

    Resource resource = mapper.reader().withAttribute(RESOURCE_SET, resourceSet)
            .withAttribute(ROOT_ELEMENT, ModelPackage.Literals.USER).treeToValue(data, Resource.class);

    assertEquals(2, resource.getContents().size());

    User u1 = (User) resource.getContents().get(0);
    User u2 = (User) resource.getContents().get(1);

    assertSame(u2, u1.getUniqueFriend());
}

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.EntitySetDeserializer.java

@Override
protected AbstractEntitySet doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final AbstractEntitySet entitySet = ODataVersion.V3 == client.getWorkingVersion()
            ? new com.msopentech.odatajclient.engine.data.metadata.edm.v3.EntitySet()
            : new com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntitySet();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                entitySet.setName(jp.nextTextValue());
            } else if ("EntityType".equals(jp.getCurrentName())) {
                entitySet.setEntityType(jp.nextTextValue());
            } else if ("IncludeInServiceDocument".equals(jp.getCurrentName())) {
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntitySet) entitySet)
                        .setIncludeInServiceDocument(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
                jp.nextToken();/*from w w w.j  a  v  a2  s. c o  m*/
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntitySet) entitySet)
                        .getNavigationPropertyBindings()
                        .add(jp.getCodec().readValue(jp, NavigationPropertyBinding.class));
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EntitySet) entitySet)
                        .setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return entitySet;
}

From source file:com.adobe.communities.ugc.migration.importer.ScoresImportServlet.java

private void importFile(final JsonParser jsonParser, final UserPropertiesManager userManager,
        final ResourceResolver resolver) throws ServletException, IOException, RepositoryException {
    Map<String, Boolean> scoreTypes = getScoreTypes(resolver);
    JsonToken token = jsonParser.nextToken();

    while (!token.equals(JsonToken.END_OBJECT)) {
        final String authId = jsonParser.getCurrentName();
        token = jsonParser.nextToken();/*from w w w . j  ava 2s.  c  o  m*/
        if (!token.equals(JsonToken.START_OBJECT)) {
            throw new ServletException("Expected to see start object, got " + token);
        }
        final Map<String, Long> scores = new HashMap<String, Long>();
        token = jsonParser.nextToken();
        while (!token.equals(JsonToken.END_OBJECT)) {
            final String scoreName = jsonParser.getCurrentName();
            jsonParser.nextToken();
            final Long scoreValue = jsonParser.getLongValue();
            scores.put(scoreName, scoreValue);
            if (!scoreTypes.containsKey(scoreName)) {
                LOG.warn(
                        "A score of type [{}] was imported for [{}], but that score type hasn't been configured "
                                + "on this server",
                        scoreName, authId);
            }
            token = jsonParser.nextToken();
        }
        updateProfileScore(authId, scores, userManager, resolver);
        token = jsonParser.nextToken();
    }
}

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

private void parseFeature(JsonParser jp) throws JsonParseException, IOException {

    mMapElement.clear();/*  w w w  .  jav a 2 s . c  o  m*/
    mMapElement.tags.clear();
    mTagMap.clear();

    for (JsonToken t; (t = jp.nextToken()) != null;) {
        if (t == FIELD_NAME) {
            if (match(jp, FIELD_GEOMETRY)) {
                if (jp.nextToken() == START_OBJECT)
                    parseGeometry(jp);
            }

            if (match(jp, FIELD_PROPERTIES)) {
                if (jp.nextToken() == START_OBJECT)
                    parseProperties(jp);
            }
            continue;
        }
        if (t == END_OBJECT)
            break;
    }

    //add tag information
    mTileSource.decodeTags(mMapElement, mTagMap);
    if (mMapElement.tags.numTags == 0)
        return;

    mTileSource.postGeomHook(mMapElement);

    if (mMapElement.type == GeometryType.NONE)
        return;

    //process this element
    mTileDataSink.process(mMapElement);
}

From source file:com.msopentech.odatajclient.engine.data.metadata.edm.EnumTypeDeserializer.java

@Override
protected AbstractEnumType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    final AbstractEnumType enumType = ODataVersion.V3 == client.getWorkingVersion()
            ? new com.msopentech.odatajclient.engine.data.metadata.edm.v3.EnumType()
            : new com.msopentech.odatajclient.engine.data.metadata.edm.v4.EnumType();

    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
        final JsonToken token = jp.getCurrentToken();
        if (token == JsonToken.FIELD_NAME) {
            if ("Name".equals(jp.getCurrentName())) {
                enumType.setName(jp.nextTextValue());
            } else if ("UnderlyingType".equals(jp.getCurrentName())) {
                enumType.setUnderlyingType(jp.nextTextValue());
            } else if ("IsFlags".equals(jp.getCurrentName())) {
                enumType.setFlags(BooleanUtils.toBoolean(jp.nextTextValue()));
            } else if ("Member".equals(jp.getCurrentName())) {
                jp.nextToken();/*from  ww w  .  jav a 2s.c  om*/
                if (enumType instanceof com.msopentech.odatajclient.engine.data.metadata.edm.v3.EnumType) {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v3.EnumType) enumType).getMembers()
                            .add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v3.Member.class));
                } else {
                    ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EnumType) enumType).getMembers()
                            .add(jp.getCodec().readValue(jp,
                                    com.msopentech.odatajclient.engine.data.metadata.edm.v4.Member.class));
                }
            } else if ("Annotation".equals(jp.getCurrentName())) {
                jp.nextToken();
                ((com.msopentech.odatajclient.engine.data.metadata.edm.v4.EnumType) enumType)
                        .setAnnotation(jp.getCodec().readValue(jp, Annotation.class));
            }
        }
    }

    return enumType;
}

From source file:org.emfjson.jackson.databind.deser.EObjectDeserializer.java

@Override
public EObject deserialize(JsonParser jp, DeserializationContext ctxt, EObject intoValue) throws IOException {
    if (intoValue == null) {
        return null;
    }/*from ww  w.j a  va  2s  .c  o  m*/

    EMFContext.prepare(ctxt);
    EObjectPropertyMap propertyMap = builder.construct(intoValue.eClass());

    final Resource resource = getResource(ctxt);

    while (jp.nextToken() != JsonToken.END_OBJECT) {
        final String field = jp.getCurrentName();
        final EObjectProperty property = propertyMap.findProperty(field);

        if (property != null) {
            property.deserializeAndSet(jp, intoValue, ctxt, resource);
        } else {
            handleUnknownProperty(jp, resource, ctxt);
        }
    }

    return intoValue;
}

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

private void parseGeometry(JsonParser jp) throws JsonParseException, IOException {

    boolean multi = false;
    GeometryType type = GeometryType.NONE;

    for (JsonToken t; (t = jp.nextToken()) != null;) {
        if (t == FIELD_NAME) {
            if (match(jp, FIELD_COORDINATES)) {
                if (jp.nextToken() != START_ARRAY)
                    continue;
                if (multi) {
                    parseMulti(jp, type);
                } else {
                    if (type == GeometryType.POLY)
                        parsePolygon(jp);

                    if (type == GeometryType.LINE)
                        parseLineString(jp);

                    if (type == GeometryType.POINT)
                        parseCoordinate(jp);

                }/*w w  w .  j  a v a  2s  .  c o  m*/
            } else if (match(jp, FIELD_TYPE)) {
                multi = false;

                jp.nextToken();

                if (match(jp, LINETRING))
                    type = GeometryType.LINE;
                else if (match(jp, POLYGON))
                    type = GeometryType.POLY;
                else if (match(jp, POINT))
                    type = GeometryType.POINT;
                else if (match(jp, MULTI_LINESTRING)) {
                    type = GeometryType.LINE;
                    multi = true;
                } else if (match(jp, MULTI_POLYGON)) {
                    type = GeometryType.POLY;
                    multi = true;
                } else if (match(jp, MULTI_POINT)) {
                    type = GeometryType.POINT;
                    multi = true;
                }

                if (type == GeometryType.POINT)
                    mMapElement.startPoints();
            }
            continue;
        }
        if (t == END_OBJECT)
            break;
    }
}

From source file:com.basho.riak.client.raw.http.NamedErlangFunctionDeserializer.java

@Override
public NamedErlangFunction deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

    JsonToken token = jp.getCurrentToken();

    if (JsonToken.START_OBJECT.equals(token)) {

        String mod = null;//from   w  w  w. j av a  2s . c  o m
        String fun = null;

        while (!JsonToken.END_OBJECT.equals(token)) {
            String field = jp.getCurrentName();

            if (Constants.FL_SCHEMA_FUN_MOD.equals(field)) {
                jp.nextToken();
                mod = jp.getText();
            } else if (Constants.FL_SCHEMA_FUN_FUN.equals(field)) {
                jp.nextToken();
                fun = jp.getText();
            }
            token = jp.nextToken();
        }
        if (mod != null && fun != null) {
            return new NamedErlangFunction(mod, fun);
        } else {
            return null;
        }
    }
    throw ctxt.mappingException(NamedErlangFunction.class);
}

From source file:com.tage.calcite.adapter.druid.DruidConnectionImpl.java

private void parseFields(List<String> fieldNames, List<Primitive> fieldTypes, Row.RowBuilder rowBuilder,
        JsonParser parser) throws IOException {
    while (parser.nextToken() == JsonToken.FIELD_NAME) {
        parseField(fieldNames, fieldTypes, rowBuilder, parser);
    }/* w w w  .  j  av a  2  s. c o  m*/
}

From source file:org.zapto.samhippiemiddlepoolchecker.Values.java

PoolError update(String address, URL... urls) {
    //error is returned at the end
    PoolError error = PoolError.NONE;/*  www.ja  va 2s .c  om*/

    //Aborting the http to save data throws an error. This says if we should cover it up.
    boolean actualNetworkError = true;

    //reset the values. If they are never changed, then 0 is the most accurate number
    accepted = 0;
    rejected = 0;
    immature = 0;
    unexchanged = 0;
    balance = 0;
    paid = 0;

    try {
        //streaming the json
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(urls[0].toString());
        HttpResponse response = client.execute(request);
        InputStream in = response.getEntity().getContent();

        JsonFactory factory = new JsonFactory();
        JsonParser parser = factory.createParser(in);
        boolean addressFound = false;//see if we need to return and address not found error
        mainParse: //label for breaking when address is found
        while (parser.nextToken() != JsonToken.END_OBJECT)//finding "report"
        {
            if ("report".equals(parser.getCurrentName()))//beginning of report
            {
                boolean firstRun = true;
                while (parser.nextToken() == JsonToken.START_ARRAY)//each address has its own array
                {
                    if (firstRun)//this jumps over some junk at the begining
                    {
                        parser.nextToken();
                        firstRun = false;
                    }
                    parser.nextToken();//have to skip some junk each time
                    if (address.equals(parser.getText()))//we have found our address
                    {
                        addressFound = true;//this prevents an address not found error from being returned
                        while (parser.nextToken() != JsonToken.END_ARRAY) {
                            //getting each of our values from the array.
                            //having -420 as a default lets us see if the value is there while not using up 0

                            if ("megahashesPerSecond".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    accepted = value;
                                }
                            }

                            if ("rejectedMegahashesPerSecond".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    rejected = value;
                                }
                            }

                            if ("immatureBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    immature = value;
                                }
                            }

                            if ("unexchangedBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    unexchanged = value;
                                }
                            }

                            if ("bitcoinBalance".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    balance = value;
                                }
                            }

                            if ("paidOut".equals(parser.getCurrentName())) {
                                float value = (float) parser.getValueAsDouble(-420);
                                if (value > 0)//negative means wrong value
                                {
                                    paid = value;
                                }
                            }
                        }
                        break mainParse;//no need to download any more addresses
                    } else {
                        while (parser.nextToken() != JsonToken.END_ARRAY) {
                        } //skipping over an unwanted address
                    }
                }
            }
        }
        if (!addressFound)//we never found an address
        {
            error = PoolError.ADDRESS;
        }
        actualNetworkError = false;
        request.abort();//should stop any extra data usage, also forces ioexception (which is ignored)
        parser.close();
        in.close();
    } catch (MalformedURLException e) {
        if (actualNetworkError) {
            error = PoolError.NETWORK;
        }
    } catch (IOException e) {
        if (actualNetworkError) {
            error = PoolError.NETWORK;
        }
    }
    return error;
}