TPObserver_question2.2

Conception de logiciels Intranet : patrons et canevas

Modérateurs : Douin, graffion

julien_24
Messages : 46
Inscription : 17 oct. 2017 13:41

TPObserver_question2.2

Message par julien_24 » 19 févr. 2018 14:10

Bonjour,

J'ai un test jnews qui bloque:
Exception inattendue sur le test PersistentObserver.
Etant donné que je suis a 4 erreurs j'ai accés au code du test (une partie seulement, celle qui pose problème), la seule instruction dans le test qui est
susceptible de lever une Exception (les autres instructions étant englobées dans un try catch) passe en local.

Bref je ne réussis pas à trouver ce qui pose bloque.

J'ai mis ma classe PersistentObserver au complet en dessous.

@KANGAMA, tu as pu trouver l'erreur que tu avais sur la question1.1, peut etre j'ai la même mais à la question 2.2 du coup.

Merci d'avance à tous.

julien

Code : Tout sélectionner

package question2;

import java.util.Observable;
import java.util.Observer;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException;
import java.io.File;

import java.util.EventObject;

public class PersistentObserver implements Observer {
  private Object arg;
  private String fileName;
  
  public PersistentObserver(String fileName){ // complétée
    this.fileName = fileName;
  }
  
  public void update(Observable observable, Object arg) {
      FileOutputStream fos = null;
      ObjectOutputStream oos = null;
      
      try {
          File f = new File(fileName);
          if(!f.exists() || !f.isFile()) {
              f.createNewFile();
          }
      } catch(IOException e) {
        e.printStackTrace();
      }
      
      try {
        fos = new FileOutputStream(fileName);
        oos = new ObjectOutputStream(fos);
        oos.writeObject(arg);
      } catch(IOException e) {
        e.printStackTrace();
      } finally {
          try {
            oos.close();
            fos.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
      }
  }
  
  /* A compléter */
  
  public Object getArg(){  // retourne le message encapsulé
      FileInputStream fis = null;
      ObjectInputStream ois = null;
      
      File f = new File(fileName);
      if(f.exists() && f.isFile()) {
      
      try {
        fis = new FileInputStream(fileName);
        ois = new ObjectInputStream(fis);
        arg = (EventObject)ois.readObject();
      } catch(ClassNotFoundException cnf) {
        cnf.printStackTrace();
      } catch(IOException e) {
          e.printStackTrace();
      }finally {
          try {
             ois.close();
             fis.close();
          } catch(IOException e) {
              e.printStackTrace();
          }
      }
    }
    return arg;
  }
}

STB
Messages : 25
Inscription : 22 févr. 2017 19:44

Re: TPObserver_question2.2

Message par STB » 19 févr. 2018 15:56

Bonjour Julien,

la méthode getArg() doit rester telle quelle, à savoir :
public Object getArg(){ return arg; }

Stéphane

julien_24
Messages : 46
Inscription : 17 oct. 2017 13:41

Re: TPObserver_question2.2

Message par julien_24 » 19 févr. 2018 17:21

Bonjour Stéphane,

Effectivement ça marche.
Le test qui était en échec passe, pourtant celui-ci va également lire un fichier pour récupérer l'objet sérialisé et l'exception n'est pas levée.
Peut être il y a t'il plusieurs fichiers pour la méthode de test.

Merci.

julien

Répondre

Qui est en ligne ?

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