Skip to end of metadata
Go to start of metadata

Aspect Faces is Java-based universal transformation tool, which based on meta-model built from data model inspection performs static or dynamic (runtime) integration of multiple aspects into single output. By aspects are meant for example: class properties, their names, data types, internationalization, components to present the data, security policy, layouts, validation rules etc. and all these faces can be described separately. Using meta-model, Aspect Faces integrates them together into textual output such as XML-based files, Java source files etc. The processing is built on text manipulation where are placed some expressions in common Unified Expression Language. With a benefit of component-oriented description of all captured facets, Aspect Faces are able to significantly reduce the amount of manually created application source code because it is enough to describe each aspect just once. Then the combination can be automated. Without this approach developers often duplicate large amount of code to acquire desired behaviour which there can be acquired with a simple parametrization of processed components.

Aspect Faces provides both static and dynamic integration of all given aspects. Since the dynamic approach is much more efficient and convenient, it is also much harder to implement. By now, the users are able to statically generate the output code in many textual languages, but this approach is based on generation of output for all possible variations of aspects. On the other hand, the dynamic approach with lazy inspection is more developer-friendly but it is also much harder to integrate with a target technology. So far, Aspect Faces provides dynamic integration only with JavaServer Faces 2.0, but there is hard work on integration with also another technologies.

Features

  • Automated UI generation (Forms/Tables) based on code inspection
  • Separation of concerns into independent components (Aspect Oriented Programming)
  • Runtime concern weaving -> context aware UI
  • Single focal point of information (method READ: RichEntity Aspect/Audit Design)
  • Separate definitions of individual concerns: Data binding, Presentations, Layout, Security, Validation, Conditionals, ...
  • Support for concern profiles (may differ per usage or even per user)
  • Configuration by exception

Benefits

  • Reduction of development and maintenance efforts
  • Significant reduction of source code duplication
  • UI load performance equivalent to vanilla JSF
  • Support for layouts, security and validation
  • Single focal point of information

Getting Started: Demo

Feel free to try out our demo! http://demo.aspectfaces.com. You may want to check out the source code. It's surprisingly simple!

Getting Started: Guide

To get started with Aspect Faces, we recommend you to follow our Guide to understand how is Aspect Faces designed, how to attach it into your project and how to efficiently use it.

Getting Started: Showcase

To see full power of Aspect Faces feel free to checkout our showcase at http://showcase.aspectfaces.com/. It describes a lot of possibilities and configuration variants to get use the framework in a way you need.

Compatibility

  • Integrable with third party libraries: Drools, Picket link, Spring Security, ...
  • Java friendly: Java EE 6, Spring,  J2EE compatible
  • Dynamic on-demand integration for JavaServer Faces 2
  • Compatibility with all sorts of JavaServer Faces components: RichFaces, ICEFaces, PrimeFaces, Tomahawk, ...

Known Issues

By now, Aspect Faces supports only Mojarra implementation of JavaServer Faces 2. MyFaces are not supported yet.

Contribution

If you would like to contribute to this project and help us to move faster, do not hesitate and visit our issue tracking and  repository or contact us.


Acknowledgement

 

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler innovative and intelligent tools for profiling Java and .NET applications.

Labels
  • None