Calyxo Base Concepts
Calyxo itself follows a component based approach. This means,
parts of Calyxo may be used alone. For example, the Calyxo
Panels and Calyxo Forms components may be used with Struts.
However, all Calyxo components share some common concepts and
features, implemented in the Calyxo Base component.
The Calyxo Base component collects some of the basic,
reusable classes used throughout all the other subprojects.
It introduces basic concepts like modules, i18n, accessors and so on...
Calyxo supports the concept of modules.
An application is composed of modules, which, in principle, are
independent from each other but may choose to share code and
data in several ways.
The Calyxo Base component introduces modules
on a high level by defining an abstract module context which
grants access to the module's name, scope and initialization parameters,
as well as transforming an action path to a context-relative path.
Just enough, to get other frameworks, like Struts, on board...
At the lower end, localizing views requires looking up resources
and formatting message in a locale dependent manner.
A resource is identified by a bundle name and a resource key.
Other Calyxo components provide higher level features such as
localized views and forms.
Calyxo components are configured by XML files, which all share
common abilities, such as importing other configuration files,
defining variables, using JSP EL expressions, storing objects, etc.
This leads to high expressive configuration formats and unifies
basic features across the platform, thus simplifying their use.
The Calyxo Base component provides an API used by
other components to participate in that.
Calyxo propagates extensive use of JSP EL and JSTL in views instead of
implementing custom tags for every beep and whistle.
Calyxo Base supports this approach by introducing accessors,
that present themselves as a hierarchy of beans and maps, ready to be used
in EL expressions.
Beside implementing various concrete accessors, the Calyxo Base
component provides an API, which may be used by applications to contribute
their own accessors.