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

Flex Discussion :

[GraniteDs] Exceptions converters


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Par défaut [GraniteDs] Exceptions converters
    Bonjour,

    je cherche quelqu'un qui a déjà réussi à créer et à paramétrer des Exceptions converters avec GraniteDS et Tide, je n'y arrive pas.

    Merci de vous faire connaitre

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    pour cela, tu dois configurer côté serveur et côté client.

    1) côté serveur :
    • créer une classe implémentant ExceptionConverter

      Ex de template :

      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
      public class PersoExceptionConverter implements ExceptionConverter {
       
      	public static final String PERSO_EXCEPTION = "Perso.Exception";
       
              @Override
      	public boolean accepts(Throwable t, Throwable finalException) {		
      		return t.getClass().equals(ton.package.PersoException.class);
      	}
       
      	@Override
      	public ServiceException convert(Throwable t, String detail, Map<String, Object> extendedData) {
       
      		ServiceException se = new ServiceException(PERSO_EXCEPTION, t.getMessage(), detail, t);
       
      		se.getExtendedData().putAll(extendedData);
       
      		return se;
              }
       
      }
      Cette classe est sensé intercepter les exceptions de type ton.package.PersoException.

    • enregistrer ton ExceptionConverter dans granite-config.xml :

      1. soit de façon automatique avec <granite-config scan="true" /> et en laissant un fichier vide granite-config.properties dans le META-INF contenant ton ExceptionConverter
      2. soit en l'ajoutant manuellement dans granite-config.xml :

        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        <exception-converters> 
        	<exception-converter type="ton.package.PersoExceptionConverter"/> 
        </exception-converters>


      Ne pas faire les 2 sinon granite t'enregistrera 2 fois cet ExceptionConverter


    2) côté client :

    • créer une classe implémentant IExceptionHandler :

      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
       
      public class PersoException implements IExceptionHandler
      {
      	public function PersoException()
      	{
      	}
       
      	public function accepts(emsg:ErrorMessage):Boolean
      	{
      		return emsg.faultCode == "Perso.Exception";
      	}
       
      	public function handle(context:BaseContext, emsg:ErrorMessage):void
      	{
      		trace("ici ton traitement à effectuer...");
      	}
      }
      Le emsg.faultCode doit correspondre au code d'erreur lancé du côté serveur soit dans mon cas de figure PERSO_EXCEPTION.

    • Enfin ajouter dans Tide ton gestionnaire d'ExceptionConverter :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      Ejb.getInstance().addExceptionHandler(PersoException);
      (ici dans le cas d'une liaison Tide avec le serveur via un EJB).


    C'est fini

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Par défaut
    Bonjour,

    un grand merci je n'avais pas créé le fichier granite-config.properties et donc mon ExceptionConverter n'était pas enregistré.

    Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2008, 17h41
  2. [C# 2.0] Un Convert.ToDouble qui semble provoque une exception.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/05/2006, 16h51
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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