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 :

API XStream ajout de classe


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut API XStream ajout de classe
    Bonjours,

    Nous utilisons une sérialisation automatique a partir de l'API XStream.

    Nous avons donc notre plugin (eclispe) qui sérialise et dé-sérialise automatiquement nos objets.

    Maintenant, j'ai ajouté un point d'extension, qui rajoute des objets en plus. Le problème est qu'a la dé-sérialisation, il ne semble plus connaitre les objets qui sont issus du plugin.

    Je souhaiterais bien lui ajouter les classes qui ne connaient pas, mais je ne sais pas ou les ajouter.

    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
    25
    26
    27
    28
    	public static List<Resource> deserializeObject(final String xmlFilePath) {
    		List<Resource> deserializedObject = null;
     
    		try {
    			// Instanciation de la classe XStream
    			XStream xstream = new XStream(new DomDriver(ENCODAGE));
    			ClassLoader classLoader = Activator.class.getClassLoader();
    			xstream.setClassLoader(classLoader);
     
    			// Redirection du fichier vers un flux d'entrée fichier
    			FileInputStream fis = new FileInputStream(new File(xmlFilePath));
     
    			try {
    				// Désérialisation du fichier vers un nouvel objet
    				deserializedObject = (List<Resource>) xstream.fromXML(fis);
    			} finally {
    				// On s'assure de fermer le flux quoi qu'il arrive
    				fis.close();
    				fis = null;
    				System.gc();
    			}
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException ioe) {
    			ioe.printStackTrace();
    		}
    		return deserializedObject;
    	}
    Sur mon gestionnaire de point d'extension, j'ai ajouté la méthode qui parcours toutes les extensions et qui récupère les classes utiles.

    Mais maintenant, j'en fait quoi ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Personne ne sait comment contourner le problème ?

    L'exception exacte est : "com.thoughtworks.xstream.mapper.CannotResolveClassException" sur l'object de ma classe qui est dans le plugin.

  3. #3
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    je ne sais pas si c'est faisable dans ton contexte mais si tu essayes d'ajouter l'appel à xstream.processAnnotations(...)pour tes nouvelles classes "inconnues", ceci avant le "read"

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bonsoir,

    Aucun changement.
    Maintenant, je ne sais pas si ca lui change quelque chose !! J'arrive pas a m'y retrouver dans l'objet XStream.

    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
    ---- Debugging information ----
    message             : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource
    cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
    cause-message       : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource
    class               : java.util.ArrayList
    required-type       : java.util.ArrayList
    path                : /list/fr.projet.sourceExtractor.model.GdalAcquisitionSource
    -------------------------------
     com.thoughtworks.xstream.converters.ConversionException: fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource
    ---- Debugging information ----
    message             : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource
    cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
    cause-message       : fr.projet.sourceExtractor.model.GdalAcquisitionSource : fr.projet.sourceExtractor.model.GdalAcquisitionSource
    class               : java.util.ArrayList
    required-type       : java.util.ArrayList
    path                : /list/fr.projet.sourceExtractor.model.GdalAcquisitionSource
    -------------------------------
    Voici exactement la trace que j'ai.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Et sinon, l'idée de créer un ClassLoader a partir de plusieurs ClassLoader, c'est pas possible ?

  6. #6
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Pourrais-tu être plus précis sur ton point d'extension et comment tu le gères dans ton plugin (celui qui déclare le point d'extension) ?

    Si dans un point d'extension on manipule une classe inconnue, on a en général un bout de code comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (IConfigurationElement e : config) {
      final Object o = e.createExecutableExtension("class");
    class est un attribut d'un tag XML du point d'extension qui déclare une classe.

    En récupérant l'objet o, ne peux tu pas faire un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xstream.processAnnotations(o.getClass());
    NB : re-montres le code que tu as au niveau de la lecture du XML avec xstream

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter des classes à une app déployée
    Par barhili04 dans le forum C#
    Réponses: 4
    Dernier message: 25/05/2007, 12h57
  2. ajouter une classe dans un projet
    Par bonbino dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/10/2006, 14h35
  3. Ajouter une class CSS a une nouvelle cellule
    Par Arfigado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/09/2006, 10h08
  4. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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