Class JsonWriteContext

java.lang.Object
com.fasterxml.jackson.core.JsonStreamContext
com.fasterxml.jackson.core.json.JsonWriteContext

public class JsonWriteContext extends JsonStreamContext
Extension of JsonStreamContext, which implements core methods needed, and also exposes more complete API to generator implementation classes.
  • Field Details

    • STATUS_OK_AS_IS

      public static final int STATUS_OK_AS_IS
      See Also:
    • STATUS_OK_AFTER_COMMA

      public static final int STATUS_OK_AFTER_COMMA
      See Also:
    • STATUS_OK_AFTER_COLON

      public static final int STATUS_OK_AFTER_COLON
      See Also:
    • STATUS_OK_AFTER_SPACE

      public static final int STATUS_OK_AFTER_SPACE
      See Also:
    • STATUS_EXPECT_VALUE

      public static final int STATUS_EXPECT_VALUE
      See Also:
    • STATUS_EXPECT_NAME

      public static final int STATUS_EXPECT_NAME
      See Also:
    • _parent

      protected final JsonWriteContext _parent
      Parent context for this context; null for root context.
    • _dups

      protected DupDetector _dups
    • _child

      protected JsonWriteContext _child
    • _currentName

      protected String _currentName
      Name of the field of which value is to be written; only used for OBJECT contexts
    • _currentValue

      protected Object _currentValue
      Since:
      2.5
    • _gotName

      protected boolean _gotName
      Marker used to indicate that we just wrote a name, and now expect a value to write
  • Constructor Details

  • Method Details

    • reset

      public JsonWriteContext reset(int type)
      Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing. Clears up state (including "current value"), changes type to one specified; resets current duplicate-detection state (if any). Parent link left as-is since it is final.

      NOTE: Public since 2.12.

      Parameters:
      type - Type to assign to this context node
      Returns:
      This context instance to allow call-chaining
    • reset

      public JsonWriteContext reset(int type, Object currValue)
      Internal method to allow instance reuse: DO NOT USE unless you absolutely know what you are doing. Clears up state, changes type to one specified, assigns "current value"; resets current duplicate-detection state (if any). Parent link left as-is since it is final.

      NOTE: Public since 2.12.

      Parameters:
      type - Type to assign to this context node
      currValue - Current value to assign to this context node
      Returns:
      This context instance to allow call-chaining
      Since:
      2.10
    • withDupDetector

      public JsonWriteContext withDupDetector(DupDetector dups)
    • getCurrentValue

      public Object getCurrentValue()
      Description copied from class: JsonStreamContext
      Method for accessing currently active value being used by data-binding (as the source of streaming data to write, or destination of data being read), at this level in hierarchy.

      Note that "current value" is NOT populated (or used) by Streaming parser or generator; it is only used by higher-level data-binding functionality. The reason it is included here is that it can be stored and accessed hierarchically, and gets passed through data-binding.

      Overrides:
      getCurrentValue in class JsonStreamContext
      Returns:
      Currently active value, if one has been assigned.
    • setCurrentValue

      public void setCurrentValue(Object v)
      Description copied from class: JsonStreamContext
      Method to call to pass value to be returned via JsonStreamContext.getCurrentValue(); typically called indirectly through JsonParser.setCurrentValue(java.lang.Object) or JsonGenerator.setCurrentValue(java.lang.Object)).
      Overrides:
      setCurrentValue in class JsonStreamContext
      Parameters:
      v - Current value to assign to this context
    • createRootContext

      @Deprecated public static JsonWriteContext createRootContext()
      Deprecated.
      Since 2.3; use method that takes argument
      Returns:
      Context instance created
    • createRootContext

      public static JsonWriteContext createRootContext(DupDetector dd)
    • createChildArrayContext

      public JsonWriteContext createChildArrayContext()
    • createChildArrayContext

      public JsonWriteContext createChildArrayContext(Object currValue)
    • createChildObjectContext

      public JsonWriteContext createChildObjectContext()
    • createChildObjectContext

      public JsonWriteContext createChildObjectContext(Object currValue)
    • getParent

      public final JsonWriteContext getParent()
      Description copied from class: JsonStreamContext
      Accessor for finding parent context of this context; will return null for root context.
      Specified by:
      getParent in class JsonStreamContext
      Returns:
      Parent context of this context, if any; null for Root contexts
    • getCurrentName

      public final String getCurrentName()
      Description copied from class: JsonStreamContext
      Method for accessing name associated with the current location. Non-null for FIELD_NAME and value events that directly follow field names; null for root level and array values.
      Specified by:
      getCurrentName in class JsonStreamContext
      Returns:
      Current field name within context, if any; null if none
    • hasCurrentName

      public boolean hasCurrentName()
      Overrides:
      hasCurrentName in class JsonStreamContext
      Returns:
      True if a call to JsonStreamContext.getCurrentName() would return non-null name; false otherwise
    • clearAndGetParent

      public JsonWriteContext clearAndGetParent()
      Method that can be used to both clear the accumulated references (specifically value set with setCurrentValue(Object)) that should not be retained, and returns parent (as would getParent() do). Typically called when closing the active context when encountering JsonToken.END_ARRAY or JsonToken.END_OBJECT.
      Returns:
      Parent context of this context node, if any; null for root context
      Since:
      2.7
    • getDupDetector

      public DupDetector getDupDetector()
    • writeFieldName

      public int writeFieldName(String name) throws JsonProcessingException
      Method that writer is to call before it writes a name of Object property.
      Parameters:
      name - Property name being written
      Returns:
      Index of the field entry (0-based)
      Throws:
      JsonProcessingException - if duplicate check restriction is violated
    • writeValue

      public int writeValue()