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

Spring Java Discussion :

Spring AOP et AspectJ : Pointcut expression contains unsupported pointcut primitive 'call'


Sujet :

Spring Java

  1. #21
    Membre expérimenté Avatar de aymen83
    Inscrit en
    Décembre 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 271
    Par défaut
    bizarre

  2. #22
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    l'exemple ici : http://eggsylife.co.uk/category/soft...ing_framework/

    genere une erreur qui est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    le même soucis avec ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     @Pointcut("@annotation(com.business.aop.MyAnnotation")
    j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
    quand j'essaie de mettre une annotation pourrie ou n'existe pas il a l'air de l'interpreter et me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Caused by: java.lang.IllegalArgumentException: error Type referred to is not an annotation type: com$business$aop$blabla
    donc l'expression est bel et bien interpretée dans tous les cas mais laquelle est la bonne ! aucune idée!

  4. #24
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    le même soucis avec ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     @Pointcut("@annotation(com.business.aop.MyAnnotation")
    si la syntaxe est parallèle à celle des Aspect écrits à la main ("public aspect… ") alors
    @annotation est utilisé pour collecter les information de l'annotation utilisée dans le pointcut :

    par exemple dans un .aj on écrira quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public pointcut myPointcut(String name): execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation(name)) ;
    ce qui passera à votre pointcut le paramètre "name" de l'annotation com.business.aop.MyAnnotation et sera appliqué à toutes les fonctions annotées par ladite om.business.aop.MyAnnotation.

    Donc à mon avis, quoique je préfère de loin utiliser des .aj à la place des annotations et ne suis donc pas un spécialiste de cette syntaxe, votre déclaration de @Pointcut est très incomplète : AspectJ ne sait pas où aller chercher ce qu'il doit "binder" au @annotation que vous lui donnez.

  5. #25
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    bonjour,

    mais la syntaxe utilisée dans le pointcut semble être la même qye dans le .aj que vous suggérerer! donc je ne comprends pas pourquoi c'est ignoré!

  6. #26
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    bonjour,

    mais la syntaxe utilisée dans le pointcut semble être la même qye dans le .aj que vous suggérerer! donc je ne comprends pas pourquoi c'est ignoré!
    dans votre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Pointcut("@annotation(com.business.aop.MyAnnotation")
    où est la partie "call" ou "execution" ?

  7. #27
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    je crois que vous avez raté le début !
    en effet j'ai aussi essayé ces expressions mais ça ne marche pas ! ai-je loupé un truc dans la syntaxe?
    votre aide sera plus que bienvenue franchement!

  8. #28
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    le call est une primitive pas supporté je pense par Spring AOP la preuve j'ai ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: org.aspectj.weaver.tools.UnsupportedPointcutPrimitiveException: Pointcut expression 'anyTaskToPerform()' contains unsupported pointcut primitive 'call'
    ceci pour un pointcut de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      @Pointcut("call(@MyAnnotation* *(..))")
    de même avec el package complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Pointcut("call(@com.business.MyAnnotation* *(..))")

  9. #29
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    je crois que vous avez raté le début !
    en effet j'ai aussi essayé ces expressions mais ça ne marche pas ! ai-je loupé un truc dans la syntaxe?
    votre aide sera plus que bienvenue franchement!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Aspect
    public class MyAnnotationAspectJava{
     
    	@Pointcut("execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation()) ")
    	public void onExecutionOfMethodWithMyAnnotation() {}
    }

  10. #30
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    Bon!
    je viens d'essayer cette expression mais ca n'arrange pas les choses; elle est bien analysée (commme dab) mais nous avons erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'identifier' at character position 157
    pointant sur la fin de la chaine à savoir: MyAnnotation()

    j'ai essayé d'ajouter l'argument name comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Pointcut("execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation(name)) ")
    et la j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: java.lang.IllegalArgumentException: error at ::0 When using @annotation(<annotationType>(<annotationField>)), <annotationField> must be bound

  11. #31
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    Bon!
    je viens d'essayer cette expression mais ca n'arrange pas les choses; elle est bien analysée (commme dab) mais nous avons erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'identifier' at character position 157
    pointant sur la fin de la chaine à savoir: MyAnnotation()

    j'ai essayé d'ajouter l'argument name comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Pointcut("execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation(name)) ")
    et la j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: java.lang.IllegalArgumentException: error at ::0 When using @annotation(<annotationType>(<annotationField>)), <annotationField> must be bound
    avec un argument il faut aussi "&& arg(name)"

  12. #32
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    @Pointcut("execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation(name))  && arg(name) ")

  13. #33
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    @Pointcut("execution(@com.business.aop.MyAnnotation * *(..)) && @annotation(com.business.aop.MyAnnotation(name))  && arg(name) ")
    apparemment c'est "args(name)" avec s

    (RTFM: http://static.springsource.org/sprin...rence/aop.html !)

  14. #34
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    bon je vais essayer !

    mais peux tu m'expliquer pourquoi insister sur l'argument dans l'expression dans ce cas précis?

    merci

  15. #35
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    toujours une erreur au niveau de l'expression même en ajoutant args

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Caused by: java.lang.IllegalArgumentException: error at ::0 When using @annotation(<annotationType>(<annotationField>)), <annotationField> must be bound

  16. #36
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jlassiramzy Voir le message
    bon je vais essayer !

    mais peux tu m'expliquer pourquoi insister sur l'argument dans l'expression dans ce cas précis?

    merci
    si vous n'avez pas besoin de récupérer un paramètre de l'annotation vous n'en avez pas besoin.

  17. #37
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    disons pour le moment j'essaie de faire marcher le pointcut , je viens de supprimer l'attribut name d'ailleurs de mon annotation on peut donc oublier les args .

    Cependant je ne comprends pas pourquoi ça ne marche pas!

Discussions similaires

  1. [Framework] Spring AOP et AspectJ
    Par gh_rachid dans le forum Spring
    Réponses: 3
    Dernier message: 30/05/2014, 10h59
  2. [Framework] Spring AOP et AspectJ
    Par Fandyz dans le forum Spring
    Réponses: 14
    Dernier message: 02/11/2012, 08h37
  3. [Framework] Spring AOP avec @AspectJ
    Par zooba dans le forum Spring
    Réponses: 1
    Dernier message: 27/03/2008, 17h06
  4. [Framework] Spring AOP et AspectJ
    Par Ganymede dans le forum Spring
    Réponses: 2
    Dernier message: 10/03/2008, 21h09
  5. Réponses: 2
    Dernier message: 09/01/2008, 11h18

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