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 .....

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

pointcut interestingCalls(String category) :
    call(Item.new(..)) && args(*, *, category);

before(String category): interestingCalls(category) { 
    if(category.equals("Socks")) {       
        System.out.println("category detect: " + category);
    else if(category.equals("Shoes"))
        System.out.println("category detect: " + category);
    else {
        check=true; 
        System.out.println("please check category " + category);
    }
}
Était-ce utile?

La solution

Pourquoi ne pas utiliser le around aspect à la place. Ensuite, s'ils ne sont pas de la bonne catégorie, vous n'entrez pas dans cette méthode, donc cela est sauté, si la méthode sautée ne fait que l'ajout.

METTRE À JOUR:

Voici un exemple d'AspectJ en action, par la publication de Manning.

public aspect ProfilingAspect {
  pointcut publicOperation() : execution(public * *.*(..));
  Object around() : publicOperation() {
    long start = System.nanoTime();
    Object ret = proceed();
    long end = System.nanoTime();
    System.out.println(thisJoinPointStaticPart.getSignature()
      + " took " + (end-start) + " nanoseconds");
    return ret;
  }
}

Donc, si vous vouliez vérifier si vous devez ajouter l'élément, s'il s'agit d'une catégorie autorisée, appelez simplement proceed, Sinon, vous retourneriez peut-être un null.

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