View Issue Details

IDProjectCategoryView StatusLast Update
0001841Common[All Projects] Generalpublic2016-11-13 17:04
ReporterXenosAssigned ToXenos 
PriorityurgentSeverityfeatureReproducibilityN/A
Status CloseResolutionfixed 
Product Version1.0.4 
Target VersionFixed in Version3.0.0 
Summary0001841: Comment gérer les input exceptions?
DescriptionSi une entrée est:
- Manquante
- Du mauvais type
- Ne renvoie pas de data

Alors comment le gérer?
Il me faut pouvoir faire cette gestion de plusieurs manières:
- Très globale et facile à utiliser (sans aucun effort), renvoyant une erreur explicite générique, même moche -> surtout pour de la sécurité -> catché par le FW
- Très globale et simple à utiliser, mais esthétique -> pour les cas où l'entrée n'a pas à être "mauvaise" (ie: les ID, comme /isometric/case?id=211264 car l'utilisateur l'a probablement changé à la main) mais peut éventuellement le devenir (favoris, page précédente, concurrence, etc) -> catché par le projet, de manière générale
- Générique et esthétique, mais à utiliser volontairement -> pour les cas où l'utilisateur rentre des informations dans un formulaire, et que celles-ci sont erronées ou non acceptées (ie: pseudo déjà pris, mail invalide, etc) -> catché par un décorateur que le handler a choisit d'utilier
- Très spécifique, pour certaines pages précises -> géré par une classe dédiée dans un handler précis

Avec ces 4 cas, je pourrai gérer facilement et finement les input exception, sans effort.
TagsNo tags attached.
Attach Tags

Relationships

parent of 0001835 CloseXenos Les handlers doivent être de vraies facades 
child of 0001842 CloseXenos Appliquer les changements de structure à tous les projets 

Activities

Xenos

Xenos

2016-11-02 23:28

administrator   ~0002715

Là, ça me semble solide ce bazar. y'a quelques petits trucs que j'aime moyen, mais c'est fontionnel et pratique. Cela me permettra de gérer les Post-redirect-get, ou les formulaires directs, d'avoir une structure bien atomique mais bien délimitée aussi, de prendre facilement en charge PHP7 et ses classes anonymes, et de gérer les input exceptions facilement ou finement.
Xenos

Xenos

2016-11-06 13:19

administrator   ~0002722

Last edited: 2016-11-06 23:50

J'ai corrigé une erreur de logique (et de code pas propre) qui faisait que les exception passaient toutes dnas le "InputErrorFacade->htmlFormatter", y compris les exceptions qui ne sont pas des soucis d'input (et du coup, le formatter InputError plantait).

La bonne façon de faire est de dire que le InputError sait formatter les input exceptions et rien d'autre, que les formatters normaux ne peuvent formatter que des responses normales (pas des exceptions) et que le ServerError peut formatter toutes les exceptions.

De cette manière, en cas d'exception générique, celle-ci sera attrapée et passée uniquement au formatter "ServerError". En cas d'exception d'input, celle-ci sera passée au formatter InputError (et s'il n'existe pas, elle remontera donc au ServerError). Et enfin, le process normal renverra une réponse que le formatter normal traitera (et si le formatter normal plante ou est absent, la response sera passée aux autres formatters, et une exception sera probablement levée dans la chaine).
Xenos

Xenos

2016-11-13 17:04

administrator   ~0002733

Ca m'a l'air gérable, même si de toute façon, il faudra simplifier un max la structure de méta-handler (cd 0001886)

Issue History

Date Modified Username Field Change
2016-11-01 15:44 Xenos New Issue
2016-11-01 15:44 Xenos Status New => Accepted
2016-11-01 15:44 Xenos Relationship added parent of 0001835
2016-11-01 15:45 Xenos Relationship added child of 0001842
2016-11-01 15:45 Xenos Priority normal => urgent
2016-11-01 21:52 Xenos Assigned To => Xenos
2016-11-01 21:52 Xenos Status Accepted => In progress
2016-11-02 23:28 Xenos Note Added: 0002715
2016-11-02 23:28 Xenos Status In progress => Ready
2016-11-02 23:28 Xenos Resolution open => fixed
2016-11-06 13:19 Xenos Note Added: 0002722
2016-11-06 23:49 AutoUpdater Status Ready => Resolved
2016-11-06 23:50 AutoUpdater Fixed in Version => 3.0.0
2016-11-13 17:04 Xenos Note Added: 0002733
2016-11-13 17:04 Xenos Status Resolved => Close