Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Jackson Core Source Code
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java".
Jackson Core Source Code files are provided in the source packge (jackson-core-2.14.0-sources.jar). You can download it at Jackson Maven Website.
You can also browse Jackson Core Source Code below:
✍: FYIcenter.com
⏎ com/fasterxml/jackson/core/filter/TokenFilterContext.java
package com.fasterxml.jackson.core.filter; import java.io.IOException; import com.fasterxml.jackson.core.*; /** * Alternative variant of {@link JsonStreamContext}, used when filtering * content being read or written (based on {@link TokenFilter}). * * @since 2.6 */ public class TokenFilterContext extends JsonStreamContext { /** * Parent context for this context; null for root context. */ protected final TokenFilterContext _parent; /* /********************************************************** /* Simple instance reuse slots; speed up things /* a bit (10-15%) for docs with lots of small /* arrays/objects /********************************************************** */ protected TokenFilterContext _child; /* /********************************************************** /* Location/state information /********************************************************** */ /** * Name of the field of which value is to be parsed; only * used for OBJECT contexts */ protected String _currentName; /** * Filter to use for items in this state (for properties of Objects, * elements of Arrays, and root-level values of root context) */ protected TokenFilter _filter; /** * Flag that indicates that start token has been read/written, * so that matching close token needs to be read/written as well * when context is getting closed. */ protected boolean _startHandled; /** * Flag that indicates that the current name of this context * still needs to be read/written, if path from root down to * included leaf is to be exposed. */ protected boolean _needToHandleName; /* /********************************************************** /* Life-cycle /********************************************************** */ protected TokenFilterContext(int type, TokenFilterContext parent, TokenFilter filter, boolean startHandled) { super(); _type = type; _parent = parent; _filter = filter; _index = -1; _startHandled = startHandled; _needToHandleName = false; } protected TokenFilterContext reset(int type, TokenFilter filter, boolean startWritten) { _type = type; _filter = filter; _index = -1; _currentName = null; _startHandled = startWritten; _needToHandleName = false; return this; } /* /********************************************************** /* Factory methods /********************************************************** */ public static TokenFilterContext createRootContext(TokenFilter filter) { // true -> since we have no start/end marker, consider start handled return new TokenFilterContext(TYPE_ROOT, null, filter, true); } public TokenFilterContext createChildArrayContext(TokenFilter filter, boolean writeStart) { TokenFilterContext ctxt = _child; if (ctxt == null) { _child = ctxt = new TokenFilterContext(TYPE_ARRAY, this, filter, writeStart); return ctxt; } return ctxt.reset(TYPE_ARRAY, filter, writeStart); } public TokenFilterContext createChildObjectContext(TokenFilter filter, boolean writeStart) { TokenFilterContext ctxt = _child; if (ctxt == null) { _child = ctxt = new TokenFilterContext(TYPE_OBJECT, this, filter, writeStart); return ctxt; } return ctxt.reset(TYPE_OBJECT, filter, writeStart); } /* /********************************************************** /* State changes /********************************************************** */ public TokenFilter setFieldName(String name) throws JsonProcessingException { _currentName = name; _needToHandleName = true; return _filter; } /** * Method called to check whether value is to be included at current output * position, either as Object property, Array element, or root value. * * @param filter Currently active filter * * @return Filter to use for value */ public TokenFilter checkValue(TokenFilter filter) { // First, checks for Object properties have been made earlier: if (_type == TYPE_OBJECT) { return filter; } // We increase it first because at the beginning of array, value is -1 int ix = ++_index; if (_type == TYPE_ARRAY) { return filter.includeElement(ix); } return filter.includeRootValue(ix); } /** * Method called to ensure that field name, if present, has been written; * may result (but does not always) in a call using given generator * * @param gen Generator to use to write the property name, if necessary * * @throws IOException If there is a problem writing property name (typically * thrown by {@code JsonGenerator}) */ public void ensureFieldNameWritten(JsonGenerator gen) throws IOException { if (_needToHandleName) { _needToHandleName = false; gen.writeFieldName(_currentName); } } /** * Method called to ensure that parent path from root is written up to * and including this node. * * @param gen Generator to use to write the path, if necessary * * @throws IOException If there is a problem writing property name (typically * thrown by {@code JsonGenerator}) */ public void writePath(JsonGenerator gen) throws IOException { if ((_filter == null) || (_filter == TokenFilter.INCLUDE_ALL)) { return; } if (_parent != null) { _parent._writePath(gen); } if (_startHandled) { // even if Object started, need to start leaf-level name if (_needToHandleName) { gen.writeFieldName(_currentName); } } else { _startHandled = true; if (_type == TYPE_OBJECT) { gen.writeStartObject(); gen.writeFieldName(_currentName); // we know name must be written } else if (_type == TYPE_ARRAY) { gen.writeStartArray(); } } } private void _writePath(JsonGenerator gen) throws IOException { if ((_filter == null) || (_filter == TokenFilter.INCLUDE_ALL)) { return; } if (_parent != null) { _parent._writePath(gen); } if (_startHandled) { // even if Object started, need to start leaf-level name if (_needToHandleName) { _needToHandleName = false; // at parent must explicitly clear gen.writeFieldName(_currentName); } } else { _startHandled = true; if (_type == TYPE_OBJECT) { gen.writeStartObject(); if (_needToHandleName) { _needToHandleName = false; // at parent must explicitly clear gen.writeFieldName(_currentName); } } else if (_type == TYPE_ARRAY) { gen.writeStartArray(); } } } public TokenFilterContext closeArray(JsonGenerator gen) throws IOException { if (_startHandled) { gen.writeEndArray(); } else { if ((_filter != null) && (_filter != TokenFilter.INCLUDE_ALL)) { if (_filter.includeEmptyArray(hasCurrentIndex())) { if (_parent != null) { _parent._writePath(gen); } gen.writeStartArray(); gen.writeEndArray(); } } } if ((_filter != null) && (_filter != TokenFilter.INCLUDE_ALL)) { _filter.filterFinishArray(); } return _parent; } public TokenFilterContext closeObject(JsonGenerator gen) throws IOException { if (_startHandled) { gen.writeEndObject(); } else { if ((_filter != null) && (_filter != TokenFilter.INCLUDE_ALL)) { if (_filter.includeEmptyObject(hasCurrentName())) { if (_parent != null) { _parent._writePath(gen); } gen.writeStartObject(); gen.writeEndObject(); } } } if ((_filter != null) && (_filter != TokenFilter.INCLUDE_ALL)) { _filter.filterFinishObject(); } return _parent; } public void skipParentChecks() { _filter = null; for (TokenFilterContext ctxt = _parent; ctxt != null; ctxt = ctxt._parent) { _parent._filter = null; } } /* /********************************************************** /* Accessors, mutators /********************************************************** */ @Override public Object getCurrentValue() { return null; } @Override public void setCurrentValue(Object v) { } @Override public final TokenFilterContext getParent() { return _parent; } @Override public final String getCurrentName() { return _currentName; } // @since 2.9 @Override public boolean hasCurrentName() { return _currentName != null; } public TokenFilter getFilter() { return _filter; } public boolean isStartHandled() { return _startHandled; } public JsonToken nextTokenToRead() { if (!_startHandled) { _startHandled = true; if (_type == TYPE_OBJECT) { return JsonToken.START_OBJECT; } // Note: root should never be unhandled return JsonToken.START_ARRAY; } // But otherwise at most might have FIELD_NAME if (_needToHandleName && (_type == TYPE_OBJECT)) { _needToHandleName = false; return JsonToken.FIELD_NAME; } return null; } public TokenFilterContext findChildOf(TokenFilterContext parent) { if (_parent == parent) { return this; } TokenFilterContext curr = _parent; while (curr != null) { TokenFilterContext p = curr._parent; if (p == parent) { return curr; } curr = p; } // should never occur but... return null; } // // // Internally used abstract methods protected void appendDesc(StringBuilder sb) { if (_parent != null) { _parent.appendDesc(sb); } if (_type == TYPE_OBJECT) { sb.append('{'); if (_currentName != null) { sb.append('"'); // !!! TODO: Name chars should be escaped? sb.append(_currentName); sb.append('"'); } else { sb.append('?'); } sb.append('}'); } else if (_type == TYPE_ARRAY) { sb.append('['); sb.append(getCurrentIndex()); sb.append(']'); } else { // nah, ROOT: sb.append("/"); } } // // // Overridden standard methods // Overridden to provide developer writeable "JsonPath" representation // of the context. @Override public String toString() { StringBuilder sb = new StringBuilder(64); appendDesc(sb); return sb.toString(); } }
⏎ com/fasterxml/jackson/core/filter/TokenFilterContext.java
Or download all of them as a single archive file:
File name: jackson-core-2.14.0-sources.jar File size: 497693 bytes Release date: 2022-11-05 Download
⇒ Download and Install Jackson Binary Package
2016-02-03, 38830👍, 1💬
Popular Posts:
How to download and install JDK (Java Development Kit) 8? If you want to write Java applications, yo...
JDK 11 jdk.charsets.jmod is the JMOD file for JDK 11 Charsets module. JDK 11 Charsets module compile...
What Is commons-collections4-4.4 .jar?commons-collections4-4.4 .jaris the JAR file for Apache Common...
Apache Avalon began in 1999 as the Java Apache Server Framework and in late 2002 separated from the ...
commons-net.jar is the bytecode of Apache Commons Net library, which implements the client side of m...