Overview
Ce document ne concerne que la configuration des extensions d'éléments de configuration :
mappings
base locations (emplacements des fichiers de configuration de base (ou produit))
configuration location (emplacements des fichiers de configuration projet)
processeurs (composants permettant de déterminer un emplacement en fonction du contexte de connexion)
Il y a deux façons de configurer chacun de ces éléments :
par la configuration du plugin “config resolver”. On parle de config settings.
par contribution, c’est-à-dire par des configurations situés dans des plugins (dit de contribution (sous-entendu contribution à la configuration du “config resolver”). On parle aussi d’external config settings.
Les config settings sont dit forts, c’est-à-dire prioritaire sur les contributions. Si un élément est configuré dans les config settings, mais également dans un plugin, les “config settings” seront prépondérants. Dans certains cas l'élément de contribution sera considéré comme doublon et donc ignoré. Dans d’autres cas, il sera “fusionné” avec ce qui configuré dans les config settings (un peu comme si les config settings étaient une redéfinition des contributions).
Plugin de contribution
Un plugin peut contribuer à la configuration du config resolver :
s’il est activé ;
si ce n’est
ni le plugin “config resolver” lui-même ;
ni le default holding plugin (plugin configuré dans la configuration du plugin par le paramètre
default_holding_plugin
) ;
s’il n’est pas exclu par le paramètre
discover_external_config_settings_exclusion
;si la contribution est activée (paramètre
discover_external_config_settings
à true)s’il contient un élément nécessaire pour qu’il soit reconnu comme plugin de contribution
si l'élément de contribution n’est pas considéré comme doublon d’un élément déjà configuré dans les config settings.
Chargement, démarrage, initialisation, prise en compte, etc
Dans tous les cas, la détection, le chargement, l’initialisation, le démarrage, de n’importe quel élément configuré est fait au démarrage du plugin “config resolver”. Il n’y a pas de rechargement à chaud.
Si un élément de contribution est modifié après le démarrage du “config resolver”, il est nécessaire de redémarrer ce dernier pour en tenir compte.
Plugin de configuration par défaut
Par défaut, on considère que le plugin de configuration est un plugin de même nom que le plugin config resolver auquel on ajoute “_CONFIG” (donc par défaut WXM_CONFIG_RESOLVER_CONFIG” : si ce plugin n’existe pas ou n’est pas activé, on utilise le plugin WXM_CONFIG_RESOLVER lui-même. Pour indiquer un autre plugin, on utilise le paramètre de plugin defaultHoldingPlugin
. Le plugin ainsi désigné est le plugin par défaut pour les fichiers de configuration projet (stockés dans res/config_resolver/configs
) et les bases (stockées dans config/config_resolver/bases
).
Configuration des mappings
Overview
Un mapping est l’association d’un identifiant et d’un chemin de configuration.
Config settings
On configure les mappings dans la section mappings
du paramètre config_settings
du plugin.
Il s’agit d’un objet JSON dont les clefs sont les identifiants et les valeurs les chemins associés.
Exemple
{ "id_of_mapping","example@of@path" }
Contribution
On peut contribuer aux mappings en mettant dans le dossier config d’un plugin de contribution un fichier JSON :
dont le nom est
config-resolver-mappings.json
dont le contenu est du même format que la section
mappings
du paramètreconfig_settings
du plugin
Configuration des bases
Par défaut, on considère qu’une base est dans le plugin de configuration par défaut, dans son dossier config/config_resolver/bases
.
Config settings
On peut configurer d’autres emplacements de base dans la section baseLocations
du paramètre config_settings
du plugin.
Il s’agit d’un objet jSON dont les clefs sont les identifiants de mapping, et les valeurs :
un nom de plugin (une string) pour un emplacement dans
config/config_resolver/bases
un objet avec les propriétés suivantes :
plugin
: le nom du plugin (une string)path
: le chemin relatif au dossier du plugin (par exempleres/config_resolver/bases
pour obtenir le même chemin que par défaut)Overview
Contribution
Pour configurer un emplacement dans un plugin, il suffit de placer le dossier config_resolver/bases dans l’un des dossiers suivants (dans le plugin de contribution):
/config
/res
/ (racine du plugin)
Configuration des emplacements de configuration
Overview
Par défaut, les dossiers de configuration projet (layers) sont stockés dans le plugin de configuration par défaut, dans le dossier res/config_resolver/configs
.
Cela permet d’avoir plusieurs dossiers de configuration. La prise en compte des dossiers est faite dans un ordre déterminable, indiqué ici:
le stockage client est toujours le dernier appliqué
juste avant on applique le dossier de configuration par défaut (celui du plugin de configuration par défaut)
avant on applique les autres dossiers de configuration qui ont un ordre configuré, dans cet ordre, du plus grand au plus petit (le plugin d’ordre 1 est appliqué après celui d’ordre 2, donc le plugin d’ordre 1 surcharge celui d’ordre 2).
les plugins n’ayant pas d’ordre sont appliqués en premier dans un ordre indéterminable et indéterminé
Config settings
Il est possible de déterminer un plugin de stockage de configuration spécifique via la section configLocations
du paramètre config_settings
du plugin "config resolver".
Il s’agit d’un tableau JSON dont les valeurs sont
des noms de plugins, pour une configuration automatique
d’objets JSON avec les propriétés suivantes:
plugin
: un nom de plugin (obligatoire)path
: un chemin (relatif au dossier de plugin). Par défaut, le chemin est/res/config_resolver/configs.
Le dossier indiqué doit obligatoire exister au démarrage.order
: un ordre de prise en compte (un entier supérieur à 0)id
: un identifiant permettant de référencer le dossier de configuration au lieu d'utiliser le nom de plugin (une chaine de caractères ne pouvant être un nom de plugin)
Contribution
Pour indiquer qu’un plugin contribue en tant que dossier de configuration, il suffit de mettre un dossier res/config_resolver/configs
dans ce plugin.
On peut également placer dans le dossier config du plugin un fichier config-resolver-config.json
.
Ce fichier est au même format que l’objet de la section configLocations
du paramètre config_settings
, excepté que la propriété plugin y est ignoré. Ce fichier permet de définir un chemin spécifique (si différent de res/config_resolver/configs
) obligatoirement dans le plugin, un ordre ou un identifiant.
Configuration des processeurs
Overview
Les processeurs sont des composants qui déterminent une valeur en fonction du contexte de connexion. Ils permettent d’adapter le chemin associé au mapping en fonction des propriétés du surfer, du navigateur, etc.
Voir d’autres informations pour l’instant ici:
Config settings
L’installation et la configuratiion des processeurs est faite dans la section postProcessors
du paramètre config_settings
du plugin.
Il s’agit d’un objet JSON dont les clefs sont des identifiants de processeurs et la valeur correspondante est la définition du processeur correspondant.
La définition peut être :
une string:
le nom d’une classe (fournie en standard dans le plugin “config resolver”
Par exemple:{ "surferRole": "fr.wedia.confres.core.model.processor.SurferRolePostProcessor" }
un chemin vers un fichier groovy définissant la classe du processeur (le chemin est relatif au plugin défini par le paramètre
default_contribution_plugin
, ouplugin
si celui-ci est indiqué)
Par exemple:{ "myprocessor": "res/postprocessors/myprocessor.groovy" }
une uri relative dans un jar (uniquement pour les plugins de contribution), situé dans le dossier
lib
du plugin
Par exemple:{ "processor": "jar:file:/thejarfile.jar!/fr/wedia/mypackage/postprocessors/myprocessorinjar.groovy" }
un objet JSON, avec les propriétés suivantes
processor
: la même valeur qu’indiquée ci-dessus dans le point “une string”plugin
: le pluginA ces propriétés, on peut ajouter des propriétés de configuration, ou une configuration par la propriété
config.
Voir ci-après, la section Configuration d'un processeur.
Contribution
Pour installer et configurer un processeur à partir d’un plugin, il suffit de mettre un fichierconfig-resolver-postprocessors.json
dans le dossier config de ce plugin. Le format de ce fichier est similaire à la section postProcessors
du paramètre de plugin config-settings
(sauf que le seul plugin configuré est lui-même).
Configuration de processeur
TODO: intégrer le contenu de la doc ci-dessus
Démarrage
TODO: intégrer le contenu de la doc ci-dessus
Plugin de processeurs
Dans la configuration du plugin "config resolver", le paramètre default_contribution_plugin
permet d'indiquer un plugin par défaut pour stocker des fichiers groovy de définition de processeurs.
Déboguage et monitoring
Il est possible d’analyser comment les différents éléments de configuration ou de contribution sont pris en compte par la page /_plugins/WXM_CONFIG_RESOLVER/page/admin/configreport.jspz
ou par le menu “Plugin configuration” (https://crossmedia.atlassian.net/wiki/spaces/~5570582eb3e7db09b041c4ab2aff710c3bbf47/pages/2597158925/Config+Resolver+-+Configuration+Resolver+Toolkit#Plugin-Configuration)