Bonjour,

J'ai une application A qui contient une dépendance vers un plugin P(P est référencé dans les fichiers BuildConfig.groovy et application.properties de A)

Le plugin P contient un service serviceP dont les méthodes rejettent parfois des exceptions InvalidQueryException est est écrit de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class ServiceP{
  
  // rejette éventuellement des InvalidQueryException
  void execute(){
   ....
  }
}
Seul problème dans le cas ou le service du plugin P est appelé depuis un objet DomainObjectA de l'application A, l'exception est transformée en une UndeclaredThrowableException qui contient bien la InvalidQueryException!!!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class DomainObjectA{
    def serviceP
   // lève une UndeclaredThrowableException à la place d'une InvalidQueryException
    void appelService(){
        serviceP.execute() 
    }
}
La seule solution que j'ai trouvé consiste à réécrire ServiceP de cette manière mais ça ne me satisfait pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class ServiceP{
  
  void execute(){ throws Exception
   ....
  }
}
Il y'a aussi la possibilité de remplacer le gestionnaire d'exception de Grails pour jouer avec le getCause() en cas de UndeclaredThrowableException mais ça me paraît bizarre d'en arriver là...

J'ai loupé un truc, des idées ?

Pour info je suis en Grails 1.3.7 et groovy 1.7.10