smartics-properties is defined by a couple of individual modules. On this page we give you a learning path to get you started.
Users are usually mainly concerned with annotations. For integration you may want to consult a small part of the configuration module and some of the extension modules. For reporting the recommended tool is the Maven plugin.
Implementors of stores of integration options may refer to the configuration module and some of the extension modules for examples.
All other modules are usually consulted only by developers who want to extend the basic functionality of the library.
The core modules form the backbone of the library and provide interfaces to plugin extensions.
First have a look at the annotations module to learn how to declare properties for your project.
The Annotations Tutorial provides a short introduction to this topic.
The core module is the basic implementation to deal with properties. Users, that is developers that declare and use defined properties, usually do not get in touch with any of these classes.
Usually as a library user you want to skip this.
The resource module defines the interface for the core to access properties metadata. Implementations to this interface are provides as resource extensions.
Usually as a library user you want to skip this.
The report module is a simple library to make report generation easier. Currently we only provide a Maven plugin that makes use of this library. If you plan to implement a report generator on your own, you may find some useful helpers here.
Usually as a library user you want to skip this.
The config module provides access to properties configurations. While the core modules defines property set that are neutral to the environment, a configuration is a set of environment agnostic properties to an environment. So this module allows to select a configuration for a given environment by a configuration key.
Library users have to select an implementation to access property sets through the property defining interfaces of their application. If there is an integration module selected, the library user will only touch a couple of interfaces.
The core modules specify some interfaces to provide implementations via the Java Service API.
The following extensions provide implementations to secure property values. If a library user does not configure an extension explicitly, the system chooses a default implementation. Please refer to the Encryption Tutorial for details.
The following implementation may serve as an example how to interface with smartics-properties to provide your own adapter to a security library that meets your requirements.
Transfer extensions allow to transfer property definitions to a target technology. If for instance you edit your properties as properties files in a SCM system, you may want to export these files to your JDBC database in your production environment.
Integration extensions allow to integrate smartics-properties with injection technologies. So these extensions make accessing of configuration instances, property sets or even single property values more convenient for the library user.
Currently smartics-properties only uses the Java Service API internally to access the implementations of its interfaces.
This section provides information about stores that actually store property definitions physically.
There is no special implementation to find property definitions on the classpath. The config modules provides this support out-of-the-box.
Properties may be storied in SQL tables. The following databases are supported and may work as examples to add support for additional database products.
Please note that an implementation usually has to provide more than simple key/value store facility. In an environment usually different configuration are accessible. So to locate a property value the configuration key and the property key has to be passed to the store.