TP8 Q2

Programmation Avancée

Moderator: douinj

Post Reply
georg_c9
Posts: 81
Joined: 24 Oct 2021 18:14

TP8 Q2

Post by georg_c9 » 27 Dec 2021 10:41

Je bloque sur la chaine de responsabilité :
- individuellement chaque classe Create, Retrieve, Update, Delete fonctionne mais lorsque j'essaie de les assembler pour faire des tests, j'ai invariablement un retour faux lors de la deuxième opération.

Je m'explique :
Handler<Requete> chaine = new Create(new Retrieve(null));
Requete requete = new Requete("GET /create/?nom=temperature&valeur=25");
boolean resultat = chaine.handleRequest(requete); -> OK

mais à la suite :
requete = new Requete("GET /retrieve/?nom=temperature");
resultat = chaine.handleRequest(requete); -> FAUX !!! (La requete ne donne pas les résultats attendus)


Je ne comprends pas pourquoi car les tests suivants fonctionnent :
Handler<Requete> c = new Create(null);
Requete requete = new Requete("GET /create/?nom=temperature&valeur=20");
boolean resultat = c.handleRequest(requete);

Handler<Requete> chaine = new Retrieve(c);
requete = new Requete("GET /retrieve/?nom=temperature");
resultat = chaine.handleRequest(requete);
assertTrue(resultat);

Quelqu'un peut-il m'expliquer d’où vient mon souci ?

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP8 Q2

Post by douinj » 27 Dec 2021 12:40

Bonjour,

Une idée ?
Vérifiez votre Table "Singleton", est-ce que "temperature" est bien présent

à suivre...

georg_c9
Posts: 81
Joined: 24 Oct 2021 18:14

Re: TP8 Q2

Post by georg_c9 » 27 Dec 2021 13:58

Oui j'ai bien vérifié que les opérations sur l'instance Singleton était correcte avec les méthodes proposées par l'objet :

public class MonTest
{
public static void main()
{
Table maTable = Table.getInstance();
maTable.ajouter("temperature", 20);
System.out.println("Le contenu de la table est : \n"+maTable.toString());
maTable.retirer("temperature");
maTable.ajouter("temperature", 40);
System.out.println("Le contenu de la table est : \n"+maTable.toString());
}
}

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP8 Q2

Post by douinj » 27 Dec 2021 14:09

Vérifiez le cheminement de votre requête, mettez une trace sur la console

Il se pourrait que le maillon create ne propage pas lorsqu'il n'est pas concerné cf. diapo 83 du cours 8 http://lmi92.cnam.fr/nfp121/supports/

...

georg_c9
Posts: 81
Joined: 24 Oct 2021 18:14

Re: TP8 Q2

Post by georg_c9 » 27 Dec 2021 14:23

Je crois avoir trouvé : lorsque je teste la commande et que je l'exécute, je renvoie TRUE mais lorsqu'il y a échec, je renvoyais FALSE au lieu de renvoyer l'objet comportant la requete : return super.handleRequest(requete);

En espérant que cela serve à d'autres.

Post Reply