25 messages in org.ibiblio.lists.xom-interest[XOM-interest] Recursion
FromSent OnAttachments
Wolfgang HoschekFeb 9, 2004 6:42 pm 
Elliotte Rusty HaroldFeb 10, 2004 9:25 am 
Wolfgang HoschekFeb 10, 2004 3:23 pm 
jco...@reutershealth.comFeb 10, 2004 3:48 pm 
Elliotte Rusty HaroldFeb 11, 2004 1:21 pm 
Wolfgang HoschekFeb 11, 2004 1:24 pm 
jco...@reutershealth.comFeb 11, 2004 2:15 pm 
Elliotte Rusty HaroldFeb 11, 2004 3:18 pm 
jco...@reutershealth.comFeb 11, 2004 4:20 pm 
Francois BeausoleilFeb 11, 2004 8:08 pm 
Trimmer, ToddFeb 12, 2004 11:57 am 
Elliotte Rusty HaroldFeb 12, 2004 2:53 pm 
Trimmer, ToddFeb 13, 2004 1:26 pm 
Elliotte Rusty HaroldMar 8, 2004 3:17 pm 
jco...@reutershealth.comMar 8, 2004 4:06 pm 
Elliotte Rusty HaroldMar 8, 2004 4:34 pm 
Elliotte Rusty HaroldMar 9, 2004 11:55 am 
Bradley S. HuffmanMar 9, 2004 12:09 pm 
Elliotte Rusty HaroldMar 9, 2004 1:05 pm 
jco...@reutershealth.comMar 9, 2004 2:04 pm 
jco...@reutershealth.comMar 9, 2004 4:32 pm 
Elliotte Rusty HaroldMar 9, 2004 10:43 pm 
John CowanMar 9, 2004 10:58 pm 
Elliotte Rusty HaroldMar 10, 2004 6:12 am 
Dirk BergstromMar 10, 2004 6:25 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[XOM-interest] RecursionActions...
From:Elliotte Rusty Harold (elh@metalab.unc.edu)
Date:Mar 9, 2004 10:43:06 pm
List:org.ibiblio.lists.xom-interest

At 4:32 PM -0500 3/9/04, jco@reutershealth.com wrote:

Unfortunately, I think this is the important one, because it's not replaceable. If you foresee a problem with serializing, you can use a different serializer, but Element.copy and Element(anElement) are critical parts of the API. And if you are running a server that is meant to handle arbitrary incoming documents (and assuming you have some check for gross size), then blowing up on nesting depth is really not acceptable.

How much nesting would typically be required to expose this? Personally, I've never noticed this problem when recursively processing a document with XOM or other APIs. How far can Java programs recurse before the stack blow up? Hundreds? Thousands? Millions? I have noticed when I accidentally write an infinite recursion it takes on the order of a minute before the program comes crashing down around me. That suggests it can go pretty deep.

A way to avoid the API wart would be to check if the element to be copied is an actual Element or a subclass, and in the latter case, using sourceElement.getClass().newInstance() to call the argless constructor.

But the subclass may not have a no-args constructor. --