tp proxy - correction fonction restaurer

Conception de logiciels Intranet : patrons et canevas

Modérateurs : Douin, graffion

saulnierJp
Messages : 16
Inscription : 27 déc. 2016 13:06

tp proxy - correction fonction restaurer

Message par saulnierJp » 21 mars 2017 21:38

Bonjour,

J'ai réalisé le TP proxy et tous les tests sont passés avec blueJ (même le test restaurer puisque j'ai implémenté le code) mais je ne comprends pas, j'ai eu un échec avec Jnews (pas de restauration ???)

Est-ce que quelqu'un qui n'a eu aucun échec pourrait mettre son code pour cette fonction?

Personnellement, j'ai fait cela:

ListeProxyHttp:

Code : Tout sélectionner

    /**
     * Restauration de cette liste.
     *
     * @return true si la restauration a eu lieu, false sinon
     */
    public boolean restaurer()
    {
        String parametres = "nom=" + this.nom + "&commande=restaurer";
        Connexion connexion = new Connexion(this.url, parametres);
        connexion.result(); // execution à distance de la restauration

        // on appelle la liste distante
        parametres = "nom=" + this.nom + "&commande=toString";
        connexion = new Connexion(this.url, parametres);
        String resultatDistant = connexion.result(); // le resultat de la connexion

        // execution locale de la restauration
        liste.restaurer();

        // Si la liste distante restauree est differente de la liste locale restauree, on renvoie false
        if (!resultatDistant.equals(liste.toString())) {
            return false;
        }

        // sinon true
        return true;
    }
ListeImpl:

Code : Tout sélectionner

    /**
     * Restauration de cette liste.
     *
     * @return true si la restauration a eu lieu, false sinon
     */
    public boolean restaurer()
    {
        ObjectInputStream ois = null;

        try {
            ois = new ObjectInputStream(new FileInputStream("liste.ser"));
            liste = (List<String>) ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                    return false;
                }
            }
        }

        return true;
    }
J'ai aussi une fonction de sauvegarde dans ListeImpl:

Code : Tout sélectionner

    /**
     * Sauvegarder.
     *
     * @param nomfichier the nomfichier
     * @throws Exception the exception
     */
    public void sauvegarder(String nomfichier) throws Exception
    {
        ObjectOutputStream oos = null;

        try {
            oos = new ObjectOutputStream(new FileOutputStream(nomfichier));
            oos.writeObject(liste);
            oos.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (oos != null) {
                try {
                    oos.flush();
                } catch (IOException ioe) {
                }
                try {
                    oos.close();
                } catch (IOException ioe) {
                }
            }
        }
    }
Et pour chaque fonction de ListeImpl (vider, ajouter, retirer), j'ai rajouté cela:

Code : Tout sélectionner

try {
            this.sauvegarder("liste.ser");
        } catch(Exception e) {
            e.printStackTrace();
        }
Ca fonctionne bien. Quand, dans le test, je remets la liste à null et recrée une instance de ListeHttpProxy puis que je restaure, j'ai, à distance et en local, la même liste. D'où mon incompréhension de cet échec jnews.

Quelqu'un aurait-il une explication?

Merci par avance,
Jean-Pierre

StevenW
Messages : 11
Inscription : 11 mars 2017 8:29

Re: tp proxy - correction fonction restaurer

Message par StevenW » 22 mars 2017 8:23

Bonjour Jean-Pierre,

Relis la réponse de Mr Douin dans le post TP_Proxy_restaurer().
En fait il ne faut pas (optionnel) sauvegarder et restaurer depuis la classe ListeImpl avec la sérialisation mais utiliser la liste distante en envoyant une requête http avec la commande toString() qui retourne les éléments déjà ajoutés, sous forme bien sur d'une String. String d'où l'on extrait, avec l'aide d'un StringTokenizer, les éléments à rajouter cette fois ci uniquement dans la liste locale.

J'espère avoir bien expliqué.

Steven

saulnierJp
Messages : 16
Inscription : 27 déc. 2016 13:06

Re: tp proxy - correction fonction restaurer

Message par saulnierJp » 26 mars 2017 20:01

Bonjour,

J'ai relu et c'est bien ce que j'ai fait mais en utilisant une méthode plus optimisée. Le test passe en local donc pourquoi pas sur jnews?

Je suis toujours preneur d'une correction si quelqu'un est d'accord car je me sens frustré que ce test ait été en échec.

Merci,
Jean-Pierre

saulnierJp
Messages : 16
Inscription : 27 déc. 2016 13:06

Re: tp proxy - correction fonction restaurer

Message par saulnierJp » 21 avr. 2017 7:41

Du coup, est-ce que quelqu'un accepterait de me montrer le code de son TP? J'ai tout réussi dans ce TP à part cela, et en local, le test passe, mais pas sur JNEWS. Mr Douin, serait-il possible d'avoir le code de JNEWS pour que je puisse reproduire le test distant de la restauration? Si une telle question retombe à l'examen, je tiens à y être préparé.

Merci par avance.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité