--- Warren Liang <[EMAIL PROTECTED]> wrote:

> Hi all,
> 
> How does JXPath handle circular object paths?  My
> object graph is can
> have circular references to objects that are the
> same instance (i.e.
> obj1 == obj2), or are different instances but have
> equivalent values
> (i.e. obj1.equals(obj2))
> 
> Right now, I'm evaluating JXPath expressions that do
> not match
> anything in the object graph and it seems like it's
> going through an
> infinite loop.  Some of my expressions use the
> "match anywhere"
> operator (i.e. //).

If you are encountering behavior that feels wrong to
you, feel welcome to open an issue in JIRA, preferably
with some sample code that can easily be turned into a
standalone JUnit test.

> 
> Does JXPath use a breadth first search or a depth
> first search through
> the object graph?
> 

In my experience, not being the original author of the
code, JXPath determines matching nodes for a given
level, then applies subsequent levels in
recursive-descent fashion to each node selected at the
current level.  So given:

<a>
  <b>
    <c /><c />
  </b>
  <b>
    <c /><c />
  </b>
  <b>
    <c /><c />
  </b>
</a>

and path "/a/b/c", JXPath will determine that a[1]
matches the first step and apply the next step.  Now
it determines that a[1]/b[1], a[1]/b[2] and a[1]/b[3]
match the second step.  Then it applies the third step
to a[1]/b[1], a[1]/b[2], and a[1]/b[3] in succession. 
I interpret this as being depth first.
    
> Ideally, I'd be able to tell JXPath to recurse a
> maximum depth, or to
> recognize that a node has already been traversed  
> Are there hooks for
> me to do this?
> 

I suppose nothing would ever stop you from
implementing a custom "I haven't seen this before"
function to guard each step, but it might get a little
heavy at RT depending on the size of your graph.  Off
the top of my head I can't remember what, if any,
safeguards are built into JXPath to prevent infinite
recursion, hence my initial suggestion (and attempt to
put the onus onto you ;) ) that you submit reports for
problems encountered.

Is any of this helpful whatsoever?
-Matt

> Thanks,
> 
> Warren Liang
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
> 



      
____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to