Seife Framework – Model driven architectures on the mobile client side

System design

Seife Annotation Processor for Android Package
Annotation-driven code templates with Seife for Android

By making use of Java source-level annotations the toolchain integrates into existing architectures without side effects. The annotations are interpreted to transform part of the existing model and interface definition into android source code. This is done by a code generator (JSR-175), it generates state-of-the-art DataProviders and Sqlite database accessibility peer classes with no middleware library creating an additional memory footprint for object management.

The approach saves a lot of time integrating android mobile devices into existing infrastructures and reduces error probability without giving up efficiency on handheld and mobile devices.

Client/Server models

Existing (JSR-338) JPA environments can easily be extended to export parts of the datastructures to mobile code. Keeping the source bases in sync and maintainable is a natural result of declaring the mobile relevant parts in the same place as the server side model.

Model driven applications

The framework is also used in mobile only development projects. It generates the neccessary boiler-plate code that is needed to run sqlite databases, define and maintain Dataproviders with CRUD operations (create/read/update/delete).
It also supports creating code for parcelable api, hence provides better support to the android interface definition languae (aidl) to export system services that accept non-trivial datastructures.

UI Bindings

Since version 1.8 the system supports data binding of JPA model fields to user interface controls. The data binding is done via templates and supports the dot-notation for nested attributes. In contrast to the usual approach of using reflection to access the data, the system will generate type-save code that is directly using the getters and setters of the model object. It is currently implemented for Vaadin, see Binding to Vaadin Flow UI controls.

Seife is an acronym for “serializing entity interchange framework extension” and the german word for soap in case you wondered. The first versions of this tool where used to transport serialized data in servlets or client side java applications. Today it is used as a robust and simple solution to store data in model based software environments.
It uses the standard Android API to efficiently handle transactional object storage requirements, this also results in an improved energy consumption on mobile devices when compared with other library based software stacks for object relational mapping.