Package org.castor.core.util
Class CycleBreaker
java.lang.Object
org.castor.core.util.CycleBreaker
lightweight mechanism for thread-safe detection of cyclic calls to hashCode or equals in objects created by the XML CodeGenerator.
Usage
- startingToCycle is called on a particular object prior to recursing on it, and recursion should only occur if this call returns false.
- releaseCycleHandle is called after the recursive call returns in order to release the cycle lock on the object.
Note : Do not use this cycle breaking mechanism on object comparisons where two instances may share the same reference to some third object, such as a String constant.
- Author:
- Jim Procter
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
releaseCycleHandle
(Object beingHashed) Called to release Cycling lock for this object at the end of a routine where cycles are to be detected.static boolean
startingToCycle
(Object beingHashed) Test to see if we are about to begin cycling on a method call to beingHashed.
-
Constructor Details
-
CycleBreaker
public CycleBreaker()
-
-
Method Details
-
startingToCycle
Test to see if we are about to begin cycling on a method call to beingHashed.- Parameters:
beingHashed
- the object to check for a cycle.- Returns:
- true if a cycle is about to occur on this non-null object.
-
releaseCycleHandle
Called to release Cycling lock for this object at the end of a routine where cycles are to be detected.- Parameters:
beingHashed
- the object for which the cycle-lock will be released.
-