org.castor.util

Class CycleBreaker


public class CycleBreaker
extends java.lang.Object

lightweight mechanism for thread-safe detection of cyclic calls to hashCode or equals in objects created by the XML CodeGenerator.

Usage

  1. startingToCycle is called on a particular object prior to recursing on it, and recursion should only occur if this call returns false.
  2. 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

Method Summary

static 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.

Method Details

releaseCycleHandle

public static void releaseCycleHandle(Object beingHashed)
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.

startingToCycle

public static boolean startingToCycle(Object beingHashed)
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.

Intalio Inc. (C) 1999-2008. All rights reserved http://www.intalio.com