This page contains topics supporting ongoing discussion at firstname.lastname@example.org.
With SYNCOPE-620, the source tree was restructured in order to ease maintenance, allow easier extendability and obtain more modularity.
Up to 1.2.X, the effective source tree (e.g. excluding utility modules providing the standalone distribution, .deb artifacts, installer, ...) is organized into four main modules:
When creating a new project from archetype, the
console sub-modules generated are actually web applications empowering the WAR overlays feature.
The nice part about this is that generated projects can easily override any single file from the official Syncope Maven artifacts; the major drawbacks are that the whole Maven artifacts need to be downloaded, and that any single feature to be implemented must be thought as a "deviation" from the standard behavior; moreover, even if some features are not required in the specific project (Activiti workflow adapter, Camel integration, ...) the related dependencies are still to be carried over, because they are part of the official artifacts.
Starting with 2.0.0, the modules were re-organized according to the following package diagram (where packages are Maven modules, actually):
The general approach taken with this refactoring was to split, wherever possible and meaningful, the existing code into API and implementation, and to introduce new modules for each relevant feature.
Moreover, a proper mechanism for handling extensions was introduced, for which the reference implementation for Camel integration was also provided.
Even if not likely at the moment, one can think to provide an alternative, LDAP or MyBatis based, implementation for syncope-core-persistence-api.
The upgraded archetype for 2.0.X is still generating the
console sub-modules as web applications; differently from the past, however, such applications enlist as dependencies one or more Syncope JAR artifacts (no more WAR overlays).
The following dependencies are set:
From the list above, any generated project can remove syncope-core-workflow-activiti to avoid embedding Activiti dependencies or provide its own workflow adapter implementing the API defined in syncope-core-workflow-api.
Moreover, if integration with Camel is desired, the following dependencies can be added:
The following dependency is set:
If integration with Camel is desired, the following dependency can be added: