On 12/27/06, Thilo Goetz <[EMAIL PROTECTED]> wrote:
Changes look ok, but I'm wondering: we now have CAS, CommonCas, AbstractCas and AbstractCas_ImplBase, all in org.apache.uima.cas. Why is AbstractCas_ImplBase in the interfaces package? Can we please move it to the appropriate impl package? Any chance we can consolidate AbstractCas and CommonCas?
AbstractCas is meant to be the superinterface of any CAS interface we might ever have in UIMA - someday this might even be extensible by users. So we can't add the methods from CommonCas, which are specific to our particular CAS and JCas interface. The only methods on AbstractCas are those that the framework absolutely requires any CAS to implement. Possibly, the type name constants might be moved to AbstractCas, since those may be considered a core part of our CAS data, independent of the actual interface... but even this is not so clear to me. If we move closer to adopting Ecore/XMI we may have an interface that doesn't use the names like "uima.cas.Integer", but instead uses standard Ecore names. I think maybe we should leave AbstractCas alone for now. I'm OK with moving AbstractCas_ImplBase to the impl package. Either Marshall could do this while he's in there or I can do it later. The only argument I can think of for why I put I didn't put it under impl is that someday this might be extensible by users, and our other ImplBase classes that our extensible by users are also in the "interfaces" package. (It's not really a package intended for only interfaces, but a "public API" package.) However, even if this does become extensible the vast majority of users would not care, so I think it would be fine to put it in the impl package. -Adam