Les ressources cachées des Properties

En ouvrant le fichier « .properties » fourni par défaut avec Hibernate, j’ai été surpris par la syntaxe suivante :

 hibernate.query.substitutions yes 'Y', no 'N'

En effet, j’avais toujours renseigné mes fichiers de propriétés en java, que ce soit en Hibernate ou autre, de la forme « standard » :

 log4j.appender.stdout=org.apache.log4j.ConsoleAppender


Pensant que ces fichiers étaient lus par Hibernate avec son propre parser j’ai tout de même vérifié dans la javadoc ce qu’il en était.
La réponse se trouve dans la méthode load de la classe java.util.Properties
La javadoc nous apprend qu’il est donc est effectivement possible, en plus du séparateur =, d’avoir ceci :

 clef             valeur

le deux-points « : » est également accepté

 clef:valeur clef                  :valeur

(A titre de comparaison, certains langages de sérialisation de données utilisent exclusivement le deux-points pour le couple clef:valeur comme YAML (YAML Ain’t Markup Language))
Alors, lequel de ces séparateurs utiliser ? Est-ce une simple questions d’habitude, ou de lisibilité ?
Les fichiers de configuration font partie du code, qui reste la première source de documentation pour le développeur.
A votre avis, laquelle de ces lignes est la plus lisible ?

 hibernate.query.substitutions yes 'Y', no 'N' hibernate.dialect  : org.hibernate.dialect.IngresDialect hibernate.connection.driver_class = com.ingres.jdbc.IngresDriver

Le format des fichiers Properties possède également d’autres particularités.
Par exemple, il est possible d’utiliser les caractères « espace », « : » ou même « = » au sein de la clef : il suffit alors de les échapper avec un antislash «  »

 cl:=ef = valeur

Et la ligne suivante :

 clef

associe la chaine vide «  » à « clef »
Il est également possible de répartir la valeur sur plusieurs lignes. Il suffit pour cela de placer un «  » en bout de ligne :

 fruits                          apple, banana, pear,                                   cantaloupe, watermelon,                                   kiwi, mango

Force est de constater que même une classe aussi anodine et bien connu (…ou pas) que Properties recèle bien des surprises.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

%d blogueurs aiment cette page :