Adam Lally wrote:
On 12/11/06, Thilo Goetz <[EMAIL PROTECTED]> wrote:
So what about Adam's suggestion to separate a CAS from a view? What
*is* the difference, conceptually?
A View has an index repository and a Sofa. (The Sofa may become
optional, but in the current impl. it is not.)
A CAS holds the analysis metadata (i.e., it has the heap) and contains
one or more views. It does not itself have a Sofa or an index
repository.
The heap? How does that come into the picture?
So basically, if we split the interfaces then CAS interface would lose
the Sofa-access methods and the getIndexRepository() methods. The
CasView interface would not have getView() methods, but otherwise
would look pretty much like the CAS interface does today.
What about the type system? Is that accessible from the CasView, or
just from the CAS?
So the we have a meta-CAS that holds the type system info and all the
concrete CASes with the actual data. So really, what we call the
CasView I would call the CAS, and that other thing is a CAS container.
All CASes in the same container share the type system and can also share
FSs.
If we want to go that route, and it sound like we do, then let's bite
the bullet and call that new construct something different. Then our
interfaces change and the whole thing will make more sense to users. It
seems intuitive to me to say
process(CasContainer casContainer) {
TypeSystem ts = casContainer.getTypeSystem();
CAS cas = casContainer.getDefaultCas();
...
Or we could give up on the word CAS completely and introduce two new
ones. That might be the least confusing.
--Thilo