IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Jakarta Commons Configuration] Autosave et subset


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut [Jakarta Commons Configuration] Autosave et subset
    Bonjour,

    j'utilise l'API Configuration du framework Jakarta Commons. J'ai un fichier XML dans lequel je souhaite placer toute la configuration de l'application. Pour me faciliter la tâche, et au vu du nombre peu important de modifications d'élements de configuration, j'ai fait activé l'auto-save sur cette configuration. Ceci fonctionne très bien jusqu'à ce que je joue avec les subset. Pour chaque partie de mon application, je crée un subset spécifique (gui, core, plugins, ...).

    Or, lorsque l'un de ces sous-éléments modifie ses propriétés, celles-ci ne sont pas automatiquement sauvées. Je n'ai rien trouvé dans la documentation expliquant ce phénomène.

    Voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    		File configurationFile = new File("configuration.properties");
    		FileConfiguration config = null;
    		try
    		{
    			config = new XMLConfiguration(configurationFile);
    		}
    		catch (ConfigurationException e)
    		{
    			System.err
    					.println("Une erreur est survenue lors du chargement de la configuration.");
    			System.err.println("L'application ne peut continuer plus loin.");
    			e.printStackTrace();
    			System.exit(1);
    		}
    		config.setAutoSave(true);
    		// L'enregistrement suivant sera bien reporté dans le fichier.
    		config.setProperty("useSSL", Boolean.TRUE);
     
    		// Les enregistrements suivants ne seront pas reportés dans le fichier.
    		Configuration mainWindowConf = config.subset("gui").subset("mainWindow");
    		mainWindowConf.setProperty("x", new Integer(100));
    		mainWindowConf.setProperty("y", new Integer(100));
    		mainWindowConf.setProperty("width", new Integer(250));
    		mainWindowConf.setProperty("height", new Integer(250));
    Voici donc le fichier XML produit pas cette portion de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <useSSL>true</useSSL>
    </configuration>
    L'on voit bien que seul le premier enregistrement est réalisé, et pas les suivants (qui sont pourtant effectués). Comment faire en sorte que tous les enregistrements soient bien reportés au niveau du fichier XML ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Bon, après quelques fastidieuses recherches sur le net, c'est un bug connu de l'API : les classes étendant org.apache.commons.configuration.HierarchicalConfiguration ne gèrent pas l'auto-save.

Discussions similaires

  1. cmt utiliser jakarta.common.lang ?
    Par tsikpemoise dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2006, 23h48
  2. Réponses: 4
    Dernier message: 05/02/2006, 10h53
  3. Réponses: 4
    Dernier message: 03/01/2006, 10h40
  4. Réponses: 5
    Dernier message: 28/10/2004, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo