Search in sources :

Example 1 with JSONToPdxMapper

use of org.apache.geode.pdx.internal.json.JSONToPdxMapper in project geode by apache.

the class JSONFormatter method getList.

private PdxListHelper getList(JsonParser jp, states currentState, PdxListHelper currentPdxList) throws JsonParseException, IOException {
    String currentFieldName = null;
    currentPdxList = new PdxListHelper(currentPdxList, null);
    while (true) {
        JsonToken nt = jp.nextToken();
        if (nt == null) {
            return currentPdxList;
        }
        switch(nt) {
            case START_OBJECT:
                {
                    objectStarts(currentState);
                    currentState = states.OBJECT_START;
                    // need to create new PdxInstance
                    // root object will not name, so create classname lazily from all members.
                    // child object will have name; but create this as well lazily from all members
                    JSONToPdxMapper tmp = getPdxInstance(jp, currentState, null);
                    currentPdxList.addObjectField(currentFieldName, tmp);
                    currentState = states.OBJECT_ENDS;
                    break;
                }
            case END_OBJECT:
                {
                    // pdxinstnce ends
                    throw new IllegalStateException("getList got token END_OBJECT while current state is " + currentState);
                }
            case FIELD_NAME:
                {
                    throw new IllegalStateException("getList got token FIELD_NAME while current state is " + currentState);
                }
            case NOT_AVAILABLE:
                {
                    throw new IllegalStateException("NOT_AVAILABLE token found in getList current state is " + currentState);
                // break;
                }
            case START_ARRAY:
                {
                    // need to create array; fieldname may be there; will it case it not there
                    arrayStarts(currentState);
                    PdxListHelper tmp = currentPdxList.addListField();
                    currentPdxList = tmp;
                    currentState = states.LIST_FOUND;
                    break;
                }
            case END_ARRAY:
                {
                    // array is end
                    arrayEnds(currentState);
                    currentState = states.LIST_ENDS;
                    if (currentPdxList.getParent() == null) {
                        return currentPdxList;
                    }
                    currentPdxList = currentPdxList.getParent();
                    break;
                }
            case VALUE_EMBEDDED_OBJECT:
                {
                    throw new IllegalStateException("VALUE_EMBEDDED_OBJECT token found");
                }
            case VALUE_FALSE:
                {
                    // write boolen
                    boolFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    currentPdxList.addBooleanField(jp.getBooleanValue());
                    break;
                }
            case VALUE_NULL:
                {
                    // write null
                    nullFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    currentPdxList.addNullField(null);
                    break;
                }
            case VALUE_NUMBER_FLOAT:
                {
                    // write double/float
                    doubleFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    // currentPdxList.addDoubleField(jp.getDoubleValue());
                    setNumberField(jp, currentPdxList);
                    break;
                }
            case VALUE_NUMBER_INT:
                {
                    // write int
                    intFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    // currentPdxList.addIntField(jp.getIntValue());
                    setNumberField(jp, currentPdxList);
                    break;
                }
            case VALUE_STRING:
                {
                    // write string
                    stringFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    currentPdxList.addStringField(jp.getText());
                    currentFieldName = null;
                    break;
                }
            case VALUE_TRUE:
                {
                    // write bool
                    boolFound(currentState);
                    currentState = states.SCALAR_FOUND;
                    currentPdxList.addBooleanField(jp.getBooleanValue());
                    break;
                }
            default:
                {
                    throw new IllegalStateException("Token not handled in getlist" + nt);
                }
        }
    }
}
Also used : PdxListHelper(org.apache.geode.pdx.internal.json.PdxListHelper) JSONToPdxMapper(org.apache.geode.pdx.internal.json.JSONToPdxMapper) JsonToken(com.fasterxml.jackson.core.JsonToken)

Aggregations

JsonToken (com.fasterxml.jackson.core.JsonToken)1 JSONToPdxMapper (org.apache.geode.pdx.internal.json.JSONToPdxMapper)1 PdxListHelper (org.apache.geode.pdx.internal.json.PdxListHelper)1