if (!_parsingContext.inArray()) { _reportMismatchedEndMarker(i, '}'); _parsingContext = _parsingContext.getParent(); return (_currToken = JsonToken.END_ARRAY); if (!_parsingContext.inObject()) { _reportMismatchedEndMarker(i, ']'); _parsingContext = _parsingContext.getParent(); return (_currToken = JsonToken.END_OBJECT); if (_parsingContext.expectComma()) { if (i != INT_COMMA) { _reportUnexpectedChar(i, "was expecting comma to separate "+_parsingContext.getTypeDesc()+" entries"); boolean inObject = _parsingContext.inObject(); if (inObject) { _parsingContext.setCurrentName(name); _currToken = JsonToken.FIELD_NAME; i = _skipWS(); case INT_LBRACKET: if (!inObject) { _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol); case INT_LCURLY: if (!inObject) {
@Override public String getCurrentName() { return _parsingContext.getCurrentName(); }
Object ob = _currentObject(); String name = (ob instanceof String) ? ((String) ob) : ob.toString(); _parsingContext.setCurrentName(name); } else if (_currToken == JsonToken.START_OBJECT) { _parsingContext = _parsingContext.createChildObjectContext(-1, -1); } else if (_currToken == JsonToken.START_ARRAY) { _parsingContext = _parsingContext.createChildArrayContext(-1, -1); } else if (_currToken == JsonToken.END_OBJECT || _currToken == JsonToken.END_ARRAY) { _parsingContext = _parsingContext.getParent(); _parsingContext = JsonReadContext.createRootContext(-1, -1);
private final JsonToken _nextAfterName() { _nameCopied = false; // need to invalidate if it was copied JsonToken t = _nextToken; _nextToken = null; // Also: may need to start new context? if (t == JsonToken.START_ARRAY) { _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol); } else if (t == JsonToken.START_OBJECT) { _parsingContext = _parsingContext.createChildObjectContext(_tokenInputRow, _tokenInputCol); } return (_currToken = t); }
/** * Method that can be called to get the name associated with * the current event. */ @Override public String getCurrentName() throws IOException, JsonParseException { // [JACKSON-395]: start markers require information from parent if (_currToken == JsonToken.START_OBJECT || _currToken == JsonToken.START_ARRAY) { JsonReadContext parent = _parsingContext.getParent(); return parent.getCurrentName(); } return _parsingContext.getCurrentName(); }
/** * Method called when an EOF is encountered between tokens. * If so, it may be a legitimate EOF, but only iff there * is no open non-root context. */ @Override protected void _handleEOF() throws JsonParseException { if (!_parsingContext.inRoot()) { _reportInvalidEOF(": expected close marker for "+_parsingContext.getTypeDesc()+" (from "+_parsingContext.getStartLocation(_ioContext.getSourceReference())+")"); } }
if (!_parsingContext.inArray()) { _reportMismatchedEndMarker(i, '}'); _parsingContext = _parsingContext.getParent(); _currToken = JsonToken.END_ARRAY; return false; if (!_parsingContext.inObject()) { _reportMismatchedEndMarker(i, ']'); _parsingContext = _parsingContext.getParent(); _currToken = JsonToken.END_OBJECT; return false; if (_parsingContext.expectComma()) { if (i != INT_COMMA) { _reportUnexpectedChar(i, "was expecting comma to separate "+_parsingContext.getTypeDesc()+" entries"); if (!_parsingContext.inObject()) { _nextTokenNotInObject(i); return false; _inputPtr = end+1; // skip current value first _parsingContext.setCurrentName(str.getValue()); _currToken = JsonToken.FIELD_NAME;
switch (t) { case START_OBJECT: _parsingContext = _parsingContext.createChildObjectContext(-1, -1); break; case START_ARRAY: _parsingContext = _parsingContext.createChildArrayContext(-1, -1); break; case END_OBJECT: case END_ARRAY: _parsingContext = _parsingContext.getParent(); break; case FIELD_NAME: _parsingContext.setCurrentName(_xmlTokens.getLocalName()); break; default: // VALUE_STRING, VALUE_NULL _parsingContext = _parsingContext.createChildObjectContext(-1, -1); return (_currToken = JsonToken.START_OBJECT); if (_parsingContext.inArray()) { _parsingContext.setCurrentName(_xmlTokens.getLocalName()); _mayBeLeaf = true; _currToken = _parsingContext.inArray() ? JsonToken.END_ARRAY : JsonToken.END_OBJECT; _parsingContext = _parsingContext.getParent(); return _currToken; _nextToken = JsonToken.FIELD_NAME;
if (_parsingContext.inObject() && _currToken != JsonToken.FIELD_NAME) { return (_currToken = _handleFieldName()); _parsingContext = _parsingContext.createChildArrayContext(-1, -1); return (_currToken = JsonToken.START_ARRAY); case 0x19: // END_ARRAY if (!_parsingContext.inArray()) { _reportMismatchedEndMarker(']', '}'); _parsingContext = _parsingContext.getParent(); return (_currToken = JsonToken.END_ARRAY); case 0x1A: // START_OBJECT _parsingContext = _parsingContext.createChildObjectContext(-1, -1); return (_currToken = JsonToken.START_OBJECT); case 0x1B: // not used in this mode; would be END_OBJECT
if (_parsingContext.inObject() && _currToken != JsonToken.FIELD_NAME) { byte[] nameBytes = str.asQuotedUTF8(); final int byteLen = nameBytes.length; _currToken = JsonToken.FIELD_NAME; _inputPtr = ptr; _parsingContext.setCurrentName(""); return (byteLen == 0); case 0x30: // long shared _parsingContext.setCurrentName(name); _inputPtr = ptr; _currToken = JsonToken.FIELD_NAME; _parsingContext.setCurrentName(_seenNames[index]); String name = _seenNames[index]; _parsingContext.setCurrentName(name); _inputPtr = ptr; _currToken = JsonToken.FIELD_NAME; _parsingContext.setCurrentName(name); _currToken = JsonToken.FIELD_NAME; return true; if (len == 0x3B) { _currToken = JsonToken.END_OBJECT; if (!_parsingContext.inObject()) { _reportMismatchedEndMarker('}', ']');
protected void _reportMismatchedEndMarker(int actCh, char expCh) throws JsonParseException { String startDesc = ""+_parsingContext.getStartLocation(_ioContext.getSourceReference()); _reportError("Unexpected close marker '"+((char) actCh)+"': expected '"+expCh+"' (for "+_parsingContext.getTypeDesc()+" starting at "+startDesc+")"); }
switch (ch) { case 0x20: // empty String as name, legal if unusual _parsingContext.setCurrentName(""); return JsonToken.FIELD_NAME; case 0x30: // long shared _reportInvalidSharedName(index); _parsingContext.setCurrentName(_seenNames[index]); _reportInvalidSharedName(index); _parsingContext.setCurrentName(_seenNames[index]); _parsingContext.setCurrentName(name); if (!_parsingContext.inObject()) { _reportMismatchedEndMarker('}', ']'); _parsingContext = _parsingContext.getParent(); return JsonToken.END_OBJECT; _parsingContext.setCurrentName(name); return JsonToken.FIELD_NAME;
/** * Since xml representation can not really distinguish between array * and object starts (both are represented with elements), this method * is overridden and taken to mean that expecation is that the current * start element is to mean 'start array', instead of default of * 'start object'. */ @Override public boolean isExpectedStartArrayToken() { JsonToken t = _currToken; if (t == JsonToken.START_OBJECT) { _currToken = JsonToken.START_ARRAY; // Ok: must replace current context with array as well _parsingContext = _parsingContext.getParent(); _parsingContext = _parsingContext.createChildArrayContext(-1, -1); // And just in case a field name was to be returned, wipe it _nextToken = null; return true; } return (t == JsonToken.START_ARRAY); }
private final int _skipWS() throws IOException, JsonParseException { while (_inputPtr < _inputEnd || loadMore()) { int i = (int) _inputBuffer[_inputPtr++]; if (i > INT_SPACE) { if (i != INT_SLASH) { return i; } _skipComment(); } else if (i != INT_SPACE) { if (i == INT_LF) { _skipLF(); } else if (i == INT_CR) { _skipCR(); } else if (i != INT_TAB) { _throwInvalidSpace(i); } } } throw _constructError("Unexpected end-of-input within/between "+_parsingContext.getTypeDesc()+" entries"); }
public Parser(Segment firstSeg, ObjectCodec codec) { super(0); _segment = firstSeg; _segmentPtr = -1; // not yet read _codec = codec; _parsingContext = JsonReadContext.createRootContext(-1, -1); }
_parsingContext.setCurrentName(n.getName()); _currToken = JsonToken.FIELD_NAME; i = _skipWS();
if (!_parsingContext.inObject() || _currToken == JsonToken.FIELD_NAME) { if (_tokenIncomplete) { _skipIncomplete();
if (!_parsingContext.inArray()) { _reportMismatchedEndMarker(i, '}'); _parsingContext = _parsingContext.getParent(); return (_currToken = JsonToken.END_ARRAY); if (!_parsingContext.inObject()) { _reportMismatchedEndMarker(i, ']'); _parsingContext = _parsingContext.getParent(); return (_currToken = JsonToken.END_OBJECT); if (_parsingContext.expectComma()) { if (i != INT_COMMA) { _reportUnexpectedChar(i, "was expecting comma to separate "+_parsingContext.getTypeDesc()+" entries"); if (!_parsingContext.inObject()) { return _nextTokenNotInObject(i); _parsingContext.setCurrentName(n.getName()); _currToken = JsonToken.FIELD_NAME; i = _skipWS();
private final JsonToken _nextAfterName() { _nameCopied = false; // need to invalidate if it was copied JsonToken t = _nextToken; _nextToken = null; // Also: may need to start new context? if (t == JsonToken.START_ARRAY) { _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol); } else if (t == JsonToken.START_OBJECT) { _parsingContext = _parsingContext.createChildObjectContext(_tokenInputRow, _tokenInputCol); } return (_currToken = t); }
/** * Method called when an EOF is encountered between tokens. * If so, it may be a legitimate EOF, but only iff there * is no open non-root context. */ @Override protected void _handleEOF() throws JsonParseException { if (!_parsingContext.inRoot()) { _reportInvalidEOF(": expected close marker for "+_parsingContext.getTypeDesc()+" (from "+_parsingContext.getStartLocation(_ioContext.getSourceReference())+")"); } }