The sesam kernel consists of a number of modular [../../../core-api/apidocs/no/sesat/search/doc-files/SearchPortalComponents2] components providing different Application Programming Interfaces (APIs) and Service Provider Interfaces (SPIs).
All requests to the sesam cluster (any sesam search frontend) go first to the search engine. The SiteLocatorFilter intercepts the request, determines the correct skin, from the host-headers domain, loading into an Site object, and then either, for client or server resources sends a redirect to the corresponding skin, or forwards the request onto one of the kernel's servlets. For a thousand foot view of the kernel architecture see the javadoc package description for no.sesat.search
For information on checking out the code and building read Sesat's Development Guidelines
For information of typical project operations
Skins come in three categories, generic, country, and sitesearch. They are heirarchical with country and sitesearch skins generally leaves on the heirarchy, and the generics used for organisation benefits. The root of all skins is generic.sesam.
A skin holds all server-side configurations for any given url-domain's business model (search modes and commands, query transformations, and result handling), and the view (templating layout definition and templates). Skins also hold and serve publicly all client requested resources (css, javascript, and images).
Skins also contain the implementation classes against the kernel's SPIs. The kernel accesses these classes through an URL based classloader. These classloaders' heirarchy will match the heirarchical of the skins. Therefore the skins will have access to, not just the kernel's APIs and SPIs, but also to parent skin implementation classes.
Server-side configuration files are generally inheritable through the skin's heirarchy. The exact inheritence implementation depends of the filetype. See AbstractResourceLoader for more details.
For information on creating new skins (aka SFC), and general skin operations, read Development using the SFC
TODO out of date :: Tests are located in, and packaged from, the search-portal projects. Some are run against the search-portal but mostly the skins depend on the -test.jar and, via the testng.xml, declare which of the tests to include, and run them against the skin's actual configuration. This is currently more useful than mocking up a dummy configuration.