Summary of my API-Review Effort of 10/21/03
0) Some clean up was done
- The folder /notes/ folder held some files needed and moved here
- The folder /psi/api/ duplicated 1-6 in this one and was culled
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