Question

Je dois appliquer une politique émettant un avertissement si des articles n'appartenant pas à une catégorie particulière sont ajoutés, en dehors des trois qui sont autorisés et interdire ces ajouts .....

Jusqu'à présent, je peux trouver les articles et émettre un avertissement ... mais je ne sais pas comment les empêcher d'être ajoutés .... pour EG.

Catégories autorisées Chaussures et chaussettes

Mais si j'essaie d'ajouter un élément de légumes à l'inventaire, cela devrait me donner un avertissement disant "catégorie non autorisée ../ Nitem ne sera pas ajouté à l'inventaire" ..... puis passez à l'article suivant ....

C'est ce que j'ai écrit jusqu'à présent .....

import org.aspectj.lang.*;

public aspect a8 {

  boolean check;

    pointcut deliverMessage(): call(* ShoppingCart.addItem(..));

    pointcut interestingcalls(String categorie): call(Item.new(..)) && args(*, *, categorie);

      before(String categorie): interestingcalls(categorie)
       { 
       if(categorie.equals("Shoes"))
        {        
       System.out.println("categorie detect:" +categorie);
        }
        else if(categorie.equals("socks"))
        {        
       System.out.println("categorie detect:" +categorie);
        }
        else
        {
        check=true;
        around(categorie);
        System.out.println("please check categorie" +categorie);
        }
    }

    around(String categorie): interestingcalls(categorie) {
            System.out.println("Start! "+categorie);
            proceed(categorie);
            System.out.println("End!");
    }
}

Je sais que je n'utilise pas les conseils autour correctement ...

Était-ce utile?

La solution

Ce que vous voulez probablement, c'est faire comme ceci:

public aspect CartAspect {

    pointcut checkAdd(String categorie) : call (void ShoppingCart.addItem(*)) && args(categorie);

    void around(String categorie) : checkAdd(categorie) {
        System.out.println("Start! " + categorie);
        if (categorie.equals("shoes")) {
            System.out.println("categorie detect:" + categorie);
            proceed(categorie);
        } else if (categorie.equals("socks")) {
            System.out.println("categorie detect:" + categorie);
            proceed(categorie);
        } else {
            System.out.println("please check categorie " + categorie);
        }
        System.out.println("End!");
    }

}

Notez que dans le cas où la catégorie est différente des «chaussures» ou des «chaussettes», nous n'appelons pas la méthode Proced ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top