Summary of my API-Review Effort of 10/21/03


0) Some clean up was done
1) aspectmodel of 4/2 was the original final spec (drafts: stubs, models)
2) aspectdefs of 4/9 led me to the /psi/words/ pages (draft: templates)
3) rolespec and javanew (draft java) summarized LTM conclusions
4) I updated former, compared api #1-6 with latter, and added this:

#2A handles required Aspect declaration and lookup process. 
#2B handles main Topic getter/setters; first can also get assocs, streams... 
       // awkward for adding valu or setting single one

valuList <= getVals(Aspect, Topic)
constrnt  <= setVals(Aspect, Topic,  valuList)

#1C does same for Assoc vrs Topic; 3 setters avoids awkwardness

// above 6 do basic getter/setter logic for Aspects of Topics and Assocs
// this includes the associations existing in which Topic plays given Role

#1A handles opening and loading TM - could do scope, but we ignore

// advanced feature lets Aspects return *any object* as computed and defaults
// this is based on data types plus scripts or other data that can be inherited
 
#3 handles Aspect inheritance & parents by using the PSI for things
#4 handles Role defaulting with inherited script types and related PSIs
#5 handles Topic and Assoc defaults via #3-4, case frame PSI/repository

// advanced feature lets Aspects check data before saving it; fire exceptions
// for lite (cardinality, domain, range, and updates), just need a datatype

#6 handles Aspect validation with inherited constraints, related PSIs

// TODO: flesh out this spec on validation process