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

Format d'échange (XML, JSON...) Java Discussion :

[XStream] problème avec l'utilisation de PersistenceStrategy


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Par défaut [XStream] problème avec l'utilisation de PersistenceStrategy
    Bonjour à tous,

    Je suis débutant en java et je cherche à sauvegarder un petit nombre d'objets (15 max). Je me suis orienté vers une persistance xml avec XStream pour des raisons évidente de simplicité et de rapidité (par rapport à une BD). Le résultat est tout à fait satisfaisant en passant par un objet XStream:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public static void serializeToFile (Object dataType) throws IOException{
    		XStream xstream = new XStream(new DomDriver());
    		FileOutputStream fos = new FileOutputStream("DataTypesSave.xml");
    		xstream.toXML(dataType, fos);
    		fos.close();
    	}
    En revanche, quand je veux passer par l'objet PersistenceStrategy ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class XmlPersistence {
     
    	private XmlSet xmlSet;
     
    	public XmlPersistence(String dir){
    		PersistenceStrategy strategy = new FilePersistenceStrategy(new File(dir));
    		xmlSet = new XmlSet(strategy);
    	}
     
    	public void save(IDataType data){
    		xmlSet.add(data);
    	}
    }
    j'ai systématiquement une erreur du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" java.lang.NullPointerException
    	at com.thoughtworks.xstream.persistence.AbstractFilePersistenceStrategy$XmlMapEntriesIterator.hasNext(AbstractFilePersistenceStrategy.java:98)
    	at java.util.AbstractMap.containsValue(AbstractMap.java:117)
    	at com.thoughtworks.xstream.persistence.XmlSet.add(XmlSet.java:39)
    	at iDataType.Serialization.XmlPersistence.save(XmlPersistence.java:23)
    	at test.InputManagerTest.main(InputManagerTest.java:91)
    Alors, je pourrais toujours répéter la première procédure autant de fois que j'ai d'objet à sauvegarder mais c'est pas beau, pas pratique et puis j'aimerais bien comprendre aussi ... donc si une âme charitable pouvait me venir en aide !!

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Par défaut
    Bonjour,

    Manifestement tu n'as pas initialisé quelque chose correctement. Comment remplis-tu ton objet IDataType ? Il nous faudrait peut-être plus de code pour mieux comprendre.

    Mathieu

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Par défaut
    Merci pour ta réponse

    Je me doutais que ça ne suffirais pas ... en fait, j'ai mes objets concrets qui héritent d'objets abstraits (factorisation de code) qui étendent l'interface IDataType. Le code serait surement trop long à reroduire ici ... par ailleurs, je ne pense pas que cela vienne de la, comme j'ai essayé de remplacer les IDataType par des Object dans ma méthode save, pour le même résultat.

    En tout cas la première solution donne ça (j'ai également un problème d'encodage de caractère comme je travail sur mac et linux ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <iDataType.dataType.QualiOrderedData>
      <adt>quali</adt>
      <cardinality>false</cardinality>
      <name>Likert 4</name>
      <dataModalities>
        <string>Plutôt pas d&apos;accord</string>
        <string>Pas du tout d&apos;accord</string>
        <string>Plutôt d&apos;accord</string>
        <string>Tout à fait d&apos;accord</string>
      </dataModalities>
    </iDataType.dataType.QualiOrderedData>
    Ce qui me chiffone c'est que la doc de PersistenceStrategy est plus que maigre, du coup on ne sait pas du tout à quelle collection le hasnext fait référence ... quelques idées ?

    Merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Par défaut
    Bonjour,

    Désolé de ne pas pouvoir t'aider plus... Dans tes objets est-ce que chaque liste est instanciée, même si elle ne contient pas d'élément ?
    Est-ce que tu as essayé avec juste une chaine de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlSet.add("ma chaine de test");
    Est-ce que tu passes null à ton add ?

    Mathieu

Discussions similaires

  1. Problème avec l'utilisation de LogMessage
    Par vanquish dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/11/2005, 10h18
  2. Problème avec l'utilisation d'un module
    Par goblin dans le forum Modules
    Réponses: 4
    Dernier message: 09/11/2005, 20h55
  3. Problème avec l'utilisation de librairies
    Par Aradesh dans le forum MFC
    Réponses: 3
    Dernier message: 01/08/2005, 15h00
  4. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08
  5. Problème avec l'utilisation de la fonction clock
    Par Matgic95 dans le forum C++Builder
    Réponses: 13
    Dernier message: 09/05/2005, 19h27

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