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