Configuration Usecases

Overview

This table lists all use cases relevant for describing, storing, reading and managing configurations.

The columns "OSGi", "ConfMgr" and "wcm.io Conf" describe if the existing implementations already cover this use case.

The last two columns "Sling Conf" and "wcm.io Conf V2" defines if this use cases should be covered by the new solution split up in Sling and wcm.io, and with which priority.

Use Cases

Use CaseOSGiConfMgrCSCwcm.io ConfSling CAConfwcm.io CAConf

A) Configuration Hierarchy







A1) Global Configuration

(tick)(tick)(error)(tick)

(tick)


A2) Default values for global configurations(tick)(tick)(error)(tick)

(tick)


A3) Configuration levels based on content hierarchy(error)(tick)(tick)(tick)

(tick)


A4) Nesting of configuration levels with parameter inheritance (object/resource-level)

(error)(tick)(error)(tick)

(tick)


A5) Nesting of configuration levels with parameter inheritance (property-level)(error)(error)(error)(tick)

(tick)


A6) Explicit linking of content with config hierarchy via property in content nodes(error)(tick)(error)(error)

(tick)


A7) Declarative linking of content with config hierarchy via configuration(error)(error)(error)(tick)

(error)


A8) Declarative linking of content with config hierarchy via pluggable strategies(error)(error)(error)(tick)

(tick)


B) Describing configurations







B1) Bundles provide metadata which configuration parameters are available(tick)(error)(tick)(tick)

(tick)


B2) Parameter definitions with Parameter Group, Name, Data Type and Default Value(tick)(error)(tick)(tick)

(tick)


B3) Multi-valued parameter type (Array)(tick)(error)(tick)(tick)

(tick)


B4) Map parameter type (Key/Value pairs)(error)(error)(error)(tick)

(error)


B5) Parameter metadata for Edit GUIs like labels, descriptions, list options(tick)(error)(tick)(tick)

(tick)


B6) i18n Support for parameter metadata for Edit GUIs(tick)(error)(tick)(tick)

PRIO 1


B7) Define lists of parameter groups (like OSGi factory configs)(tick)(error)(tick)(error)

(tick)


B8) Define parameters via typed annotation classes(tick)(error)(error)(error)

(tick)


B9) Distinction between technical/infrastructure and business/application parameters(error)(error)(error)(error)

PRIO 2


C) Reading configurations (API)







C1) Access configurations via dedicated service interface(tick)(tick)(tick)(error)


(tick)



C2) Access configurations via adaptTo()(error)(tick)(error)(tick)

(error)


C3) Parameters are divided in groups/sections accessible individually(tick)(tick)(error)(error)

(tick)


C4) Support of nested parameter groups/deep hierarchies(error)(tick)(error)(error)

(tick)


C5) Support list of parameter groups (like OSGi factory configs)(tick)(tick)(error)(error)

(tick)


C6) Support merging of lists of parameter groups along with inheritance(error)(tick)(error)(error)

(tick)


C7) Access parameters as key/value maps (Map)(tick)(tick)(tick)(tick)

(tick)


C8) Access parameters as ValueMap with easy type conversion(error)(tick)(tick)(tick)

(tick)


C9) Access parameters via Resource wrapper(error)(tick)(tick)(error)(tick)
C10) Access parameters via typed annotation classes(tick)(error)(error)(error)

(tick)


C11) Direct access to configuration parameters in HTL/Sightly bindings(error)(error)(error)(tick)

(tick)


C12) Easy access to configuration parameters in Sling Models(error)(tick)(error)(tick)

(tick)


C13) Easy access to configuration parameters in OSGi services(tick)(tick)(tick)(tick)

(tick)


C14) Support lowlevel access to other configuration-like resource structures beyond configuration parameter lists (e.g. workflow configurations)(error)(tick)(tick)(error)

(tick)


D) Storing configurations







D1) Store configuration in repository(tick)(tick)(tick)(tick)

(tick)


D2) Store configuration in hierarchies linked to content(error)(tick)(error)(tick)

(tick)


D3) Store configuration in folder separate from content like /conf(error)(tick)(tick)(tick)

(tick)


D4) Store configuration together with content in /content(error)(error)(error)(tick)

(error)

(tick)
D5) Pluggable storage strategies(error)(error)(error)(tick)

(tick)


D6) Store technical/infrastructure parameter on different location than business/application parameters(error)(error)(error)(error)

PRIO 2


E) Managing Configurations







E1) Provide configuration management API for reading and writing configuration(tick)(error)(error)(tick)

(tick)


E2) Provide GUI editor to edit configurations(tick)(error)(tick)(tick)

(error)

(tick)

E3) Provide web console plugin for inspecting configurations(tick)(tick)(error)(error)

(tick)


E4) Allow to lock parameter values on a certain configuration hierarchy level to disallow overriding it on deeper levels(error)(error)(error)(tick)

(error)


E5) Configuration change listener - notification when configuration changes(tick)(error)(error)(error)

PRIO 2


F) Parameter overriding







F1) Allow overriding content-specific parameters via OSGi configuration

(error)(error)(error)(tick)

(tick)


F2) Allow overriding content-specific parameters via JVM system environment parameters(error)(error)(error)(tick)

(tick)


F3) Allow overriding content-specific parameters via request header (activate only on test instances)(error)(error)(error)(tick)

PRIO 2


G) AEM-specific features







G1) Support storing configurations in cq:Page nodes due to support around this (versioning, replication etc.)(error)(tick)(tick)(tick)


(tick)

G2) Configuration editor integrated in AEM Touch UI(error)(error)(error)(tick)


(tick)

H) Advanced Features







H1) Switch configurations depending on Sling Run Modes(tick)(error)(error)(error)(error)
H2) Support different configuration hierarchy/persistence strategies for different applications deployed in the same instance(error)(error)(error)(tick)(error)
H3) Placeholders within configuration values to reference other parameters(error)(error)(error)(error)(error)
H4) Multi tenancy-support(error)(tick)(tick)(tick)

(tick)


H5) Multi tenancy-support with full isolation(error)(error)(error)(error)

PRIO 2


H6) Security: Easy protection of configuration via ACLs(tick)(tick)(tick)(tick)(error)

(tick)


H7) Detect "AEM Site root" via configuration (most times the most-inner configuration scope)(error)(error)(error)(tick)
(question)