Example usage for com.fasterxml.jackson.core JsonToken FIELD_NAME

List of usage examples for com.fasterxml.jackson.core JsonToken FIELD_NAME

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonToken FIELD_NAME.

Prototype

JsonToken FIELD_NAME

To view the source code for com.fasterxml.jackson.core JsonToken FIELD_NAME.

Click Source Link

Document

FIELD_NAME is returned when a String token is encountered as a field name (same lexical value, different function)

Usage

From source file:com.github.shyiko.jackson.module.advice.AdvisedBeanDeserializer.java

protected Object deserializeWithView(JsonParser jp, DeserializationContext ctxt, Object bean,
        Class<?> activeView) throws IOException {
    beanDeserializerAdvice.before(bean, jp, ctxt);
    JsonToken t = jp.getCurrentToken();//from   ww w.j  ava2 s.c o  m
    for (; t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
        String propName = jp.getCurrentName();
        // Skip field name:
        jp.nextToken();

        if (beanDeserializerAdvice.intercept(bean, propName, jp, ctxt)) {
            continue;
        }

        SettableBeanProperty prop = _beanProperties.find(propName);
        if (prop != null) {
            if (!prop.visibleInView(activeView)) {
                jp.skipChildren();
                continue;
            }
            try {
                prop.deserializeAndSet(jp, ctxt, bean);
            } catch (Exception e) {
                wrapAndThrow(e, bean, propName, ctxt);
            }
            continue;
        }
        handleUnknownVanilla(jp, ctxt, bean, propName);
    }
    beanDeserializerAdvice.after(bean, jp, ctxt);
    return bean;
}

From source file:com.evolveum.midpoint.prism.lex.json.AbstractJsonLexicalProcessor.java

/**
 * Normally returns a MapXNode. However, JSON primitives/lists can be simulated by two-member object (@type + @value); in these cases we return respective XNode.
 *///from  ww w.java 2 s  . co  m
@NotNull
private XNode parseJsonObject(JsonParsingContext ctx, IterativeParsingContext ipc)
        throws SchemaException, IOException {
    Validate.notNull(ctx.parser.currentToken());

    QName typeName = null;
    QNameUtil.QNameInfo elementNameInfo = null;

    Object tid = ctx.parser.getTypeId();
    if (tid != null) {
        typeName = tagToTypeName(tid, ctx);
    }

    final MapXNode map = new MapXNode();
    XNode wrappedValue = null;
    boolean defaultNamespaceDefined = false;
    QNameUtil.QNameInfo currentFieldNameInfo = null;

    for (;;) {
        if (ipc != null && ipc.abortProcessing) {
            break;
        }

        JsonToken token = ctx.parser.nextToken();
        if (token == null) {
            ctx.prismParsingContext.warnOrThrow(LOGGER,
                    "Unexpected end of data while parsing a map structure at " + getPositionSuffix(ctx));
            break;
        } else if (token == JsonToken.END_OBJECT) {
            break;
        } else if (token == JsonToken.FIELD_NAME) {
            String newFieldName = ctx.parser.getCurrentName();
            if (currentFieldNameInfo != null) {
                ctx.prismParsingContext.warnOrThrow(LOGGER,
                        "Two field names in succession: " + currentFieldNameInfo + " and " + newFieldName);
            }
            currentFieldNameInfo = QNameUtil.uriToQNameInfo(newFieldName, true);
        } else {
            assert currentFieldNameInfo != null;
            PrismContext prismContext = schemaRegistry.getPrismContext();
            // if we look for objects and found an entry different from c:objects
            boolean skipValue = false;
            if (ipc != null && !isSpecial(currentFieldNameInfo.name)
                    && (prismContext.getObjectsElementName() == null || !QNameUtil
                            .match(currentFieldNameInfo.name, prismContext.getObjectsElementName()))) {
                if (ipc.dataSent) {
                    ctx.prismParsingContext.warnOrThrow(LOGGER,
                            "Superfluous data after list of objects was found: " + currentFieldNameInfo.name);
                    skipValue = true;
                } else {
                    ipc = null;
                }
            }
            XNode valueXNode = parseValue(ctx, ipc);
            if (skipValue) {
                continue;
            }
            if (isSpecial(currentFieldNameInfo.name)) {
                if (isNamespaceDeclaration(currentFieldNameInfo.name)) {
                    if (defaultNamespaceDefined) {
                        ctx.prismParsingContext.warnOrThrow(LOGGER,
                                "Default namespace defined more than once at " + getPositionSuffix(ctx));
                    }
                    String namespaceUri = getStringValue(valueXNode, currentFieldNameInfo, ctx);
                    ctx.defaultNamespaces.put(map, namespaceUri);
                    defaultNamespaceDefined = true;
                    if (ipc != null) {
                        if (ipc.dataSent) {
                            ctx.prismParsingContext.warnOrThrow(LOGGER,
                                    "When parsing list of objects, default namespace was present after the objects "
                                            + getPositionSuffix(ctx));
                        } else {
                            ipc.defaultNamespace = namespaceUri; // there is a place for only one @ns declaration (at the level of "objects" map)
                        }
                    }
                } else if (isTypeDeclaration(currentFieldNameInfo.name)) {
                    if (typeName != null) {
                        ctx.prismParsingContext.warnOrThrow(LOGGER,
                                "Value type defined more than once at " + getPositionSuffix(ctx));
                    }
                    typeName = QNameUtil.uriToQName(getStringValue(valueXNode, currentFieldNameInfo, ctx),
                            true);
                } else if (isElementDeclaration(currentFieldNameInfo.name)) {
                    if (elementNameInfo != null) {
                        ctx.prismParsingContext.warnOrThrow(LOGGER,
                                "Element name defined more than once at " + getPositionSuffix(ctx));
                    }
                    elementNameInfo = QNameUtil
                            .uriToQNameInfo(getStringValue(valueXNode, currentFieldNameInfo, ctx), true);
                } else if (isValue(currentFieldNameInfo.name)) {
                    if (wrappedValue != null) {
                        ctx.prismParsingContext.warnOrThrow(LOGGER, "Value ('" + PROP_VALUE
                                + "') defined more than once at " + getPositionSuffix(ctx));
                    }
                    wrappedValue = valueXNode;
                }
            } else {
                Map.Entry<QName, XNode> entry = map.putReturningEntry(currentFieldNameInfo.name, valueXNode);
                if (currentFieldNameInfo.explicitEmptyNamespace) {
                    ctx.noNamespaceEntries.put(entry, null);
                }
            }
            currentFieldNameInfo = null;
        }
    }
    // Return either map or primitive value (in case of @type/@value)
    XNode rv;
    if (wrappedValue != null) {
        if (!map.isEmpty()) {
            ctx.prismParsingContext.warnOrThrow(LOGGER,
                    "Both '" + PROP_VALUE + "' and regular content present at " + getPositionSuffix(ctx));
            rv = map;
        } else {
            rv = wrappedValue;
        }
    } else {
        rv = map;
    }
    if (typeName != null) {
        if (wrappedValue != null && wrappedValue.getTypeQName() != null
                && !wrappedValue.getTypeQName().equals(typeName)) {
            ctx.prismParsingContext.warnOrThrow(LOGGER,
                    "Conflicting type names for '" + PROP_VALUE + "' (" + wrappedValue.getTypeQName()
                            + ") and regular content (" + typeName + ") present at " + getPositionSuffix(ctx));
        }
        rv.setTypeQName(typeName);
        rv.setExplicitTypeDeclaration(true);
    }
    if (elementNameInfo != null) {
        if (wrappedValue != null && wrappedValue.getElementName() != null) {
            boolean wrappedValueElementNoNamespace = ctx.noNamespaceElementNames.containsKey(wrappedValue);
            if (!wrappedValue.getElementName().equals(elementNameInfo.name)
                    || wrappedValueElementNoNamespace != elementNameInfo.explicitEmptyNamespace) {
                ctx.prismParsingContext.warnOrThrow(LOGGER,
                        "Conflicting element names for '" + PROP_VALUE + "' (" + wrappedValue.getElementName()
                                + "; no NS=" + wrappedValueElementNoNamespace + ") and regular content ("
                                + elementNameInfo.name + "; no NS=" + elementNameInfo.explicitEmptyNamespace
                                + ") present at " + getPositionSuffix(ctx));
            }
        }
        rv.setElementName(elementNameInfo.name);
        if (elementNameInfo.explicitEmptyNamespace) {
            ctx.noNamespaceElementNames.put(rv, null);
        }
    }
    return rv;
}

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

public void importForumContent(final JsonParser jsonParser, final Resource resource,
        final ResourceResolver resolver) throws ServletException, IOException {
    if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
        jsonParser.nextToken(); // advance to first key in the object - should be the id value of the old post
        while (jsonParser.getCurrentToken().equals(JsonToken.FIELD_NAME)) {
            extractTopic(jsonParser, resource, resolver, forumOperations);
            jsonParser.nextToken(); // get the next token - presumably a field name for the next post
        }/*from  ww  w.  jav  a  2s. c  o  m*/
        jsonParser.nextToken(); // skip end token
    } else {
        throw new IOException("Improperly formed JSON - expected an OBJECT_START token, but got "
                + jsonParser.getCurrentToken().toString());
    }
}

From source file:com.zenesis.qx.remote.RequestHandler.java

private Object[] readParameters(JsonParser jp, Class[] types) throws IOException {
    if (types == null) {
        // Check for parameters
        if (jp.getCurrentToken() == JsonToken.FIELD_NAME && jp.getCurrentName().equals("parameters")
                && jp.nextToken() == JsonToken.START_ARRAY) {
            while (jp.nextToken() != JsonToken.END_ARRAY)
                ;/*from w  w w  . j  a  va  2s.c  om*/
        }
        return null;
    }
    Object[] values = new Object[types.length];
    Object[] params = null;

    // Check for parameters
    if (jp.getCurrentToken() == JsonToken.FIELD_NAME && jp.getCurrentName().equals("parameters")
            && jp.nextToken() == JsonToken.START_ARRAY) {

        params = readArray(jp, types);
    }

    for (int i = 0; i < values.length; i++)
        if (i < params.length)
            values[i] = params[i];
        else
            values[i] = null;

    return values;
}

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

public void importCommentsContent(final JsonParser jsonParser, final Resource resource,
        final ResourceResolver resolver) throws ServletException, IOException {
    if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
        jsonParser.nextToken(); // advance to first key in the object - should be the id value of the old post
        while (jsonParser.getCurrentToken().equals(JsonToken.FIELD_NAME)) {
            extractTopic(jsonParser, resource, resolver, commentOperations);
            jsonParser.nextToken(); // get the next token - presumably a field name for the next post
        }/*  w  ww  .  j  av  a  2 s  .  co  m*/
        jsonParser.nextToken(); // skip end token
    } else {
        throw new IOException("Improperly formed JSON - expected an OBJECT_START token, but got "
                + jsonParser.getCurrentToken().toString());
    }
}

From source file:com.netflix.hollow.jsonadapter.HollowJsonAdapter.java

private int addUnstructuredMap(JsonParser parser, String mapTypeName, HollowMapWriteRecord mapRec)
        throws IOException {
    mapRec.reset();/*from  ww w . j a v a  2s  .c o  m*/

    HollowMapSchema schema = (HollowMapSchema) hollowSchemas.get(mapTypeName);
    ObjectFieldMapping valueRec = null;
    ObjectMappedFieldPath fieldMapping = null;

    JsonToken token = parser.nextToken();

    while (token != JsonToken.END_OBJECT) {
        if (token != JsonToken.FIELD_NAME) {
            HollowObjectWriteRecord mapKeyWriteRecord = (HollowObjectWriteRecord) getWriteRecord(
                    schema.getKeyType());
            String fieldName = mapKeyWriteRecord.getSchema().getFieldName(0);
            mapKeyWriteRecord.reset();

            switch (mapKeyWriteRecord.getSchema().getFieldType(0)) {
            case STRING:
                mapKeyWriteRecord.setString(fieldName, parser.getCurrentName());
                break;
            case BOOLEAN:
                mapKeyWriteRecord.setBoolean(fieldName, Boolean.valueOf(parser.getCurrentName()));
                break;
            case INT:
                mapKeyWriteRecord.setInt(fieldName, Integer.parseInt(parser.getCurrentName()));
                break;
            case LONG:
                mapKeyWriteRecord.setLong(fieldName, Long.parseLong(parser.getCurrentName()));
                break;
            case DOUBLE:
                mapKeyWriteRecord.setDouble(fieldName, Double.parseDouble(parser.getCurrentName()));
                break;
            case FLOAT:
                mapKeyWriteRecord.setFloat(fieldName, Float.parseFloat(parser.getCurrentName()));
                break;
            default:
                throw new IOException("Cannot parse type " + mapKeyWriteRecord.getSchema().getFieldType(0)
                        + " as key in map (" + mapKeyWriteRecord.getSchema().getName() + ")");
            }

            int keyOrdinal = stateEngine.add(schema.getKeyType(), mapKeyWriteRecord);

            int valueOrdinal;

            if (token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) {
                valueOrdinal = parseSubType(parser, token, schema.getValueType());
            } else {
                if (valueRec == null) {
                    valueRec = getObjectFieldMapping(schema.getValueType());
                    fieldMapping = valueRec.getSingleFieldMapping();
                }
                addObjectField(parser, token, fieldMapping);
                valueOrdinal = valueRec.build(-1);
            }

            mapRec.addEntry(keyOrdinal, valueOrdinal);
        }
        token = parser.nextToken();
    }

    return stateEngine.add(schema.getName(), mapRec);
}

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

public void importJournalContent(final JsonParser jsonParser, final Resource resource,
        final ResourceResolver resolver) throws IOException, ServletException {

    if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
        jsonParser.nextToken(); // advance to first key in the object - should be the id value of the old post
        while (jsonParser.getCurrentToken().equals(JsonToken.FIELD_NAME)) {
            extractTopic(jsonParser, resource, resolver, journalOperations);
            jsonParser.nextToken(); // get the next token - presumably a field name for the next post
        }/*from  w w w .j ava 2s  . c  o  m*/
        jsonParser.nextToken(); // skip end token
    } else {
        throw new IOException("Improperly formed JSON - expected an OBJECT_START token, but got "
                + jsonParser.getCurrentToken().toString());
    }
}

From source file:com.github.shyiko.jackson.module.advice.AdvisedBeanDeserializer.java

@SuppressWarnings("resource")
protected Object deserializeWithUnwrapped(JsonParser jp, DeserializationContext ctxt, Object bean)
        throws IOException {
    JsonToken t = jp.getCurrentToken();/*from  w w  w .  ja  v  a2  s.c  om*/
    if (t == JsonToken.START_OBJECT) {
        t = jp.nextToken();
    }
    TokenBuffer tokens = new TokenBuffer(jp);
    tokens.writeStartObject();
    final Class<?> activeView = _needViewProcesing ? ctxt.getActiveView() : null;
    beanDeserializerAdvice.before(bean, jp, ctxt);
    for (; t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
        String propName = jp.getCurrentName();

        if (beanDeserializerAdvice.intercept(bean, propName, jp, ctxt)) {
            continue;
        }

        SettableBeanProperty prop = _beanProperties.find(propName);
        jp.nextToken();
        if (prop != null) { // normal case
            if (activeView != null && !prop.visibleInView(activeView)) {
                jp.skipChildren();
                continue;
            }
            try {
                prop.deserializeAndSet(jp, ctxt, bean);
            } catch (Exception e) {
                wrapAndThrow(e, bean, propName, ctxt);
            }
            continue;
        }
        if (_ignorableProps != null && _ignorableProps.contains(propName)) {
            handleIgnoredProperty(jp, ctxt, bean, propName);
            continue;
        }
        // but... others should be passed to unwrapped property deserializers
        tokens.writeFieldName(propName);
        tokens.copyCurrentStructure(jp);
        // how about any setter? We'll get copies but...
        if (_anySetter != null) {
            _anySetter.deserializeAndSet(jp, ctxt, bean, propName);
        }
    }
    tokens.writeEndObject();
    _unwrappedPropertyHandler.processUnwrapped(jp, ctxt, bean, tokens);
    beanDeserializerAdvice.after(bean, jp, ctxt);
    return bean;
}

From source file:com.bazaarvoice.jackson.rison.RisonParser.java

@Override
public String nextTextValue() throws IOException, JsonParseException {
    if (_currToken == JsonToken.FIELD_NAME) { // mostly copied from '_nextAfterName'
        _nameCopied = false;/* ww  w .java2 s.  c om*/
        JsonToken t = _nextToken;
        _nextToken = null;
        _currToken = t;
        if (t == JsonToken.VALUE_STRING) {
            if (_tokenIncomplete) {
                _tokenIncomplete = false;
                _finishString();
            }
            return _textBuffer.contentsAsString();
        }
        if (t == JsonToken.START_ARRAY) {
            _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol);
        } else if (t == JsonToken.START_OBJECT) {
            _parsingContext = _parsingContext.createChildObjectContext(_tokenInputRow, _tokenInputCol);
        }
        return null;
    }
    // !!! TODO: optimize this case as well
    return (nextToken() == JsonToken.VALUE_STRING) ? getText() : null;
}