Class CycleDetectionStrategy

java.lang.Object
org.kordamp.json.util.CycleDetectionStrategy
Direct Known Subclasses:
CycleDetectionStrategy.LenientCycleDetectionStrategy, CycleDetectionStrategy.LenientNoRefCycleDetectionStrategy, CycleDetectionStrategy.StrictCycleDetectionStrategy

public abstract class CycleDetectionStrategy extends Object
Base class for cycle detection in a hierarchy.
The JSON spec forbides cycles in a hierarchy and most parsers will raise and error when a cycle is detected. This class defines a contract for handling those cycles and two base implementations:
  • STRICT - will throw a JSONException if a cycle is found.
  • LENIENT - will return an empty array or null object if a cycle is found.
  • Field Details

    • IGNORE_PROPERTY_ARR

      public static final JSONArray IGNORE_PROPERTY_ARR
    • IGNORE_PROPERTY_OBJ

      public static final JSONObject IGNORE_PROPERTY_OBJ
    • LENIENT

      public static final CycleDetectionStrategy LENIENT
      Returns empty array and null object
    • NOPROP

      public static final CycleDetectionStrategy NOPROP
      Returns a special object (IGNORE_PROPERTY_OBJ) that indicates the entire property should be ignored
    • STRICT

      public static final CycleDetectionStrategy STRICT
      Throws a JSONException
  • Constructor Details

    • CycleDetectionStrategy

      public CycleDetectionStrategy()
  • Method Details

    • handleRepeatedReferenceAsArray

      public abstract JSONArray handleRepeatedReferenceAsArray(Object reference)
      Handle a repeated reference
      Must return a valid JSONArray or null.
      Parameters:
      reference - the repeated reference.
    • handleRepeatedReferenceAsObject

      public abstract JSONObject handleRepeatedReferenceAsObject(Object reference)
      Handle a repeated reference
      Must return a valid JSONObject or null.
      Parameters:
      reference - the repeated reference.