JFacets' key features include:
- Based on simple, but yet powerful concepts (the "Profile-Based MVC Paradigm")
- Focuses on the Controller level (view-technology agnostic, model-agnostic)
- Defines a generic API for profile management, allowing to re-use existing User Directories, legacy databases etc. by developing small adapters
- Defines a generic Authentication mechanism, allowing re-use of existing authentication processes
- No intrusion at the back-end level (use your business objects as is with no changes)
- Small configuration (only one very simple XML file, which could be replaced by annotations)
- Fully J2EE compliant (WebFacets is built on top of the servlet API as a Servlet Filter)
In JFacets, controller code is bound to the requesting profile at run-time, as well as to a target object, which allows driving the rendering process for the user and the object you want to display to the user who requests it.
A typical example is the typical read-only/update case, where user of role "A" can update the properties of an object "O" whereas user "B" is only able to read the values.
In JFacets, you would define one facet for each of the profiles (A and B), that would do the necessary job to display the object as needed (e.g. disable all inputs for users of role B). At runtime, the framework will locate and execute the appropriate facet for object O and authenticated profile.
At the moment, JFacets includes a fully functional Web implementation of the Profile-Based MVC paradigm (which has already been used in several applications), and work has started on SwingFacets, to build profile-based Swing apps.
JFacets uses only two external libraries, Spring for IOC and configuration and Log4J for logging.