//    public abstract JsonLocation getTokenLocation();
 //   public abstract JsonLocation getCurrentLocation();
 /*
 /**********************************************************
 /* Public API, token state overrides
 /**********************************************************
 */
 public override void clearCurrentToken()
 {
     if (_currToken != null)
     {
         _lastClearedToken = _currToken;
         _currToken = null;
     }
 }
Esempio n. 2
0
 /// <exception cref="com.epl.geometry.JsonGeometryException"/>
 public override com.epl.geometry.JsonReader.Token NextToken()
 {
     try
     {
         com.fasterxml.jackson.core.JsonToken token = m_jsonParser.NextToken();
         return(MapToken(token));
     }
     catch (System.Exception ex)
     {
         throw new com.epl.geometry.JsonGeometryException(ex);
     }
 }
Esempio n. 3
0
 private static com.epl.geometry.JsonReader.Token MapToken(com.fasterxml.jackson.core.JsonToken token)
 {
     if (token == com.fasterxml.jackson.core.JsonToken.END_ARRAY)
     {
         return(com.epl.geometry.JsonReader.Token.END_ARRAY);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.END_OBJECT)
     {
         return(com.epl.geometry.JsonReader.Token.END_OBJECT);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.FIELD_NAME)
     {
         return(com.epl.geometry.JsonReader.Token.FIELD_NAME);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.START_ARRAY)
     {
         return(com.epl.geometry.JsonReader.Token.START_ARRAY);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.START_OBJECT)
     {
         return(com.epl.geometry.JsonReader.Token.START_OBJECT);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_FALSE)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_FALSE);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_NULL)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_NULL);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_FLOAT)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_NUMBER_FLOAT);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_NUMBER_INT)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_NUMBER_INT);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_STRING)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_STRING);
     }
     if (token == com.fasterxml.jackson.core.JsonToken.VALUE_TRUE)
     {
         return(com.epl.geometry.JsonReader.Token.VALUE_TRUE);
     }
     if (token == null)
     {
         return(null);
     }
     throw new com.epl.geometry.JsonGeometryException("unexpected token");
 }
        /// <summary>
        /// Offlined handling for cases where there was no buffered token to
        /// return, and the token read next could not be returned as-is,
        /// at least not yet, but where we have not yet established that
        /// buffering is needed.
        /// </summary>
        /// <exception cref="System.IO.IOException"/>
        protected internal com.fasterxml.jackson.core.JsonToken _nextToken2()
        {
            while (true)
            {
                com.fasterxml.jackson.core.JsonToken t = delegate_.nextToken();
                if (t == null)
                {
                    // is this even legal?
                    return (_currToken = t);
                }
                com.fasterxml.jackson.core.filter.TokenFilter f;
                switch (t.id())
                {
                    case JsonTokenIdConstants.ID_START_ARRAY:
                    {
                        f = _itemFilter;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            _headContext = _headContext.createChildArrayContext(f, true);
                            return (_currToken = t);
                        }
                        if (f == null)
                        {
                            // does this occur?
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        // Otherwise still iffy, need to check
                        f = _headContext.checkValue(f);
                        if (f == null)
                        {
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        if (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            f = f.filterStartArray();
                        }
                        _itemFilter = f;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            _headContext = _headContext.createChildArrayContext(f, true);
                            return (_currToken = t);
                        }
                        _headContext = _headContext.createChildArrayContext(f, false);
                        // but if we didn't figure it out yet, need to buffer possible events
                        if (_includePath)
                        {
                            t = _nextTokenWithBuffering(_headContext);
                            if (t != null)
                            {
                                _currToken = t;
                                return t;
                            }
                        }
                        goto main_loop_continue;
                    }

                    case JsonTokenIdConstants.ID_START_OBJECT:
                    {
                        f = _itemFilter;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            _headContext = _headContext.createChildObjectContext(f, true);
                            return (_currToken = t);
                        }
                        if (f == null)
                        {
                            // does this occur?
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        // Otherwise still iffy, need to check
                        f = _headContext.checkValue(f);
                        if (f == null)
                        {
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        if (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            f = f.filterStartObject();
                        }
                        _itemFilter = f;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            _headContext = _headContext.createChildObjectContext(f, true);
                            return (_currToken = t);
                        }
                        _headContext = _headContext.createChildObjectContext(f, false);
                        if (_includePath)
                        {
                            t = _nextTokenWithBuffering(_headContext);
                            if (t != null)
                            {
                                _currToken = t;
                                return t;
                            }
                        }
                        goto main_loop_continue;
                    }

                    case JsonTokenIdConstants.ID_END_ARRAY:
                    case JsonTokenIdConstants.ID_END_OBJECT:
                    {
                        bool returnEnd = _headContext.isStartHandled();
                        f = _headContext.getFilter();
                        if ((f != null) && (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL
                            ))
                        {
                            f.filterFinishArray();
                        }
                        _headContext = ((com.fasterxml.jackson.core.filter.TokenFilterContext)_headContext
                            .getParent());
                        _itemFilter = _headContext.getFilter();
                        if (returnEnd)
                        {
                            return (_currToken = t);
                        }
                        goto main_loop_continue;
                    }

                    case JsonTokenIdConstants.ID_FIELD_NAME:
                    {
                        string name = delegate_.getCurrentName();
                        f = _headContext.setFieldName(name);
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            _itemFilter = f;
                            return (_currToken = t);
                        }
                        if (f == null)
                        {
                            // filter out the value
                            delegate_.nextToken();
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        f = f.includeProperty(name);
                        if (f == null)
                        {
                            // filter out the value
                            delegate_.nextToken();
                            delegate_.skipChildren();
                            goto main_loop_continue;
                        }
                        _itemFilter = f;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            if (_includePath)
                            {
                                return (_currToken = t);
                            }
                            //                        if (_includeImmediateParent) { ...
                            goto main_loop_continue;
                        }
                        if (_includePath)
                        {
                            t = _nextTokenWithBuffering(_headContext);
                            if (t != null)
                            {
                                _currToken = t;
                                return t;
                            }
                        }
                        goto main_loop_continue;
                    }

                    default:
                    {
                        // scalar value
                        f = _itemFilter;
                        if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                        {
                            return (_currToken = t);
                        }
                        if (f != null)
                        {
                            f = _headContext.checkValue(f);
                            if ((f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL) || ((f != null
                                ) && f.includeValue(delegate_)))
                            {
                                return (_currToken = t);
                            }
                        }
                        // Otherwise not included (leaves must be explicitly included)
                        break;
                    }
                }
            main_loop_continue: ;
            }
            main_loop_break: ;
        }
        /*
        /**********************************************************
        /* Public API, traversal
        /**********************************************************
        */
        /// <exception cref="System.IO.IOException"/>
        public override com.fasterxml.jackson.core.JsonToken nextToken()
        {
            // Anything buffered?
            com.fasterxml.jackson.core.filter.TokenFilterContext ctxt = _exposedContext;
            if (ctxt != null)
            {
                while (true)
                {
                    com.fasterxml.jackson.core.JsonToken t = ctxt.nextTokenToRead();
                    if (t != null)
                    {
                        _currToken = t;
                        return t;
                    }
                    // all done with buffered stuff?
                    if (ctxt == _headContext)
                    {
                        _exposedContext = null;
                        if (ctxt.inArray())
                        {
                            t = delegate_.getCurrentToken();
                            // Is this guaranteed to work without further checks?
                            //                        if (t != JsonToken.START_ARRAY) {
                            _currToken = t;
                            return t;
                        }
                        // Almost! Most likely still have the current token;
                        // with the sole exception of
                        /*
                        t = delegate.getCurrentToken();
                        if (t != JsonToken.FIELD_NAME) {
                        _currToken = t;
                        return t;
                        }
                        */
                        break;
                    }
                    // If not, traverse down the context chain
                    ctxt = _headContext.findChildOf(ctxt);
                    _exposedContext = ctxt;
                    if (ctxt == null)
                    {
                        // should never occur
                        throw _constructError("Unexpected problem: chain of filtered context broken");
                    }
                }
            }
            // If not, need to read more. If we got any:
            com.fasterxml.jackson.core.JsonToken t_1 = delegate_.nextToken();
            if (t_1 == null)
            {
                // no strict need to close, since we have no state here
                return (_currToken = t_1);
            }
            // otherwise... to include or not?
            com.fasterxml.jackson.core.filter.TokenFilter f;
            switch (t_1.id())
            {
                case JsonTokenIdConstants.ID_START_ARRAY:
                {
                    f = _itemFilter;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        _headContext = _headContext.createChildArrayContext(f, true);
                        return (_currToken = t_1);
                    }
                    if (f == null)
                    {
                        // does this occur?
                        delegate_.skipChildren();
                        break;
                    }
                    // Otherwise still iffy, need to check
                    f = _headContext.checkValue(f);
                    if (f == null)
                    {
                        delegate_.skipChildren();
                        break;
                    }
                    if (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        f = f.filterStartArray();
                    }
                    _itemFilter = f;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        _headContext = _headContext.createChildArrayContext(f, true);
                        return (_currToken = t_1);
                    }
                    _headContext = _headContext.createChildArrayContext(f, false);
                    // Also: only need buffering if parent path to be included
                    if (_includePath)
                    {
                        t_1 = _nextTokenWithBuffering(_headContext);
                        if (t_1 != null)
                        {
                            _currToken = t_1;
                            return t_1;
                        }
                    }
                    break;
                }

                case JsonTokenIdConstants.ID_START_OBJECT:
                {
                    f = _itemFilter;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        _headContext = _headContext.createChildObjectContext(f, true);
                        return (_currToken = t_1);
                    }
                    if (f == null)
                    {
                        // does this occur?
                        delegate_.skipChildren();
                        break;
                    }
                    // Otherwise still iffy, need to check
                    f = _headContext.checkValue(f);
                    if (f == null)
                    {
                        delegate_.skipChildren();
                        break;
                    }
                    if (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        f = f.filterStartObject();
                    }
                    _itemFilter = f;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        _headContext = _headContext.createChildObjectContext(f, true);
                        return (_currToken = t_1);
                    }
                    _headContext = _headContext.createChildObjectContext(f, false);
                    // Also: only need buffering if parent path to be included
                    if (_includePath)
                    {
                        t_1 = _nextTokenWithBuffering(_headContext);
                        if (t_1 != null)
                        {
                            _currToken = t_1;
                            return t_1;
                        }
                    }
                    // note: inclusion of surrounding Object handled separately via
                    // FIELD_NAME
                    break;
                }

                case JsonTokenIdConstants.ID_END_ARRAY:
                case JsonTokenIdConstants.ID_END_OBJECT:
                {
                    bool returnEnd = _headContext.isStartHandled();
                    f = _headContext.getFilter();
                    if ((f != null) && (f != com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL
                        ))
                    {
                        f.filterFinishArray();
                    }
                    _headContext = ((com.fasterxml.jackson.core.filter.TokenFilterContext)_headContext
                        .getParent());
                    _itemFilter = _headContext.getFilter();
                    if (returnEnd)
                    {
                        return (_currToken = t_1);
                    }
                    break;
                }

                case JsonTokenIdConstants.ID_FIELD_NAME:
                {
                    string name = delegate_.getCurrentName();
                    // note: this will also set 'needToHandleName'
                    f = _headContext.setFieldName(name);
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        _itemFilter = f;
                        if (!_includePath)
                        {
                            // Minor twist here: if parent NOT included, may need to induce output of
                            // surrounding START_OBJECT/END_OBJECT
                            if (_includeImmediateParent && !_headContext.isStartHandled())
                            {
                                t_1 = _headContext.nextTokenToRead();
                                // returns START_OBJECT but also marks it handled
                                _exposedContext = _headContext;
                            }
                        }
                        return (_currToken = t_1);
                    }
                    if (f == null)
                    {
                        delegate_.nextToken();
                        delegate_.skipChildren();
                        break;
                    }
                    f = f.includeProperty(name);
                    if (f == null)
                    {
                        delegate_.nextToken();
                        delegate_.skipChildren();
                        break;
                    }
                    _itemFilter = f;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        if (_includePath)
                        {
                            return (_currToken = t_1);
                        }
                    }
                    if (_includePath)
                    {
                        t_1 = _nextTokenWithBuffering(_headContext);
                        if (t_1 != null)
                        {
                            _currToken = t_1;
                            return t_1;
                        }
                    }
                    break;
                }

                default:
                {
                    // scalar value
                    f = _itemFilter;
                    if (f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL)
                    {
                        return (_currToken = t_1);
                    }
                    if (f != null)
                    {
                        f = _headContext.checkValue(f);
                        if ((f == com.fasterxml.jackson.core.filter.TokenFilter.INCLUDE_ALL) || ((f != null
                            ) && f.includeValue(delegate_)))
                        {
                            return (_currToken = t_1);
                        }
                    }
                    // Otherwise not included (leaves must be explicitly included)
                    break;
                }
            }
            // We get here if token was not yet found; offlined handling
            return _nextToken2();
        }