Mathias, Thanks for your interest and proposed contribution. Yes, HtmlDataTableHack is not nice. I'm not at all a friend of such hacks but in this case there is no alternative. You cannot derive UIData from a proprietary UIDataBase because: 1. The API documentation of the javax.faces.* classes is part of the JSR-127 specification. Therefore the signature of our UIData must exactly match the specified UIData. 2. UIDataBase would make dependencies even worse. HtmlDataTable would be derived from UIData (it must be according to the spec) and would use methods from UIDataBase. So, every component derived from HtmlDataTable or our extended HtmlDataTable itself would depend on the MyFaces javax.faces.* classes and would no longer be compatible to other JSR-127 APIs!
Well, the reason for the HtmlDataTableHack is, that we otherwise would not have (protected) access to the internal DataModel. But our extended HtmlDataTable needs access to it to be able to save the state of the DataModel and restore it. The good news is: we are working on this issue in the JSR-252 expert group (= JSF 1.2) and there will a simple solution for this. ;-) Regarding code redundancy: Yes, I hate it too. And even though I'm a blooded java developer, sometimes an #include would be a nice thing. ;-) Hope there is no C guy listening... :-) -MG
