net.sf.json.util
Class CycleDetectionStrategy

java.lang.Object
  extended by net.sf.json.util.CycleDetectionStrategy

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:

Author:
Andres Almiray

Field Summary
static JSONArray IGNORE_PROPERTY_ARR
           
static JSONObject IGNORE_PROPERTY_OBJ
           
static CycleDetectionStrategy LENIENT
          Returns empty array and null object
static CycleDetectionStrategy NOPROP
          Returns a special object (IGNORE_PROPERTY_OBJ) that indicates the entire property should be ignored
static CycleDetectionStrategy STRICT
          Throws a JSONException
 
Constructor Summary
CycleDetectionStrategy()
           
 
Method Summary
abstract  JSONArray handleRepeatedReferenceAsArray(Object reference)
          Handle a repeated reference
Must return a valid JSONArray or null.
abstract  JSONObject handleRepeatedReferenceAsObject(Object reference)
          Handle a repeated reference
Must return a valid JSONObject or null.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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 Detail

CycleDetectionStrategy

public CycleDetectionStrategy()
Method Detail

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.