added a comment -
2008-11-06 14:49 The StackOverflow exception was caused by code in BasicDataType:
public void finish(Object owner) {
this.owner = owner;
handlers = Collections.unmodifiableMap(handlers);
}
So, the 'handlers' map is rewrapped in a new unmodifiableMap very often.
This should not happen, and was fixed.
But the actual cause of the problem was that the 'finish' method was called very often on the same DataType.
This is caused by VirtualNodeManager, which creates VirtualFields using the 'node' datatype without cloning it first.
Changed AbstractField that it does not accept already finished datatypes.
public void finish(Object owner) {
this.owner = owner;
handlers = Collections.unmodifiableMap(handlers);
}
So, the 'handlers' map is rewrapped in a new unmodifiableMap very often.
This should not happen, and was fixed.
But the actual cause of the problem was that the 'finish' method was called very often on the same DataType.
This is caused by VirtualNodeManager, which creates VirtualFields using the 'node' datatype without cloning it first.
Changed AbstractField that it does not accept already finished datatypes.