2011-05-17 2 views
0

Je dois appliquer une politique émettant un avertissement si des éléments n'appartenant pas à une catégorie particulière sont ajoutés, à l'exception des trois qui sont autorisés et interdisant de tels ajouts .....Application de la politique pour ajouter un nouvel élément - ASPECTJ

Jusqu'à présent, je suis capable de trouver les articles et émettre un avertissement .... mais je ne sais pas comment les empêcher d'être ajouté .... Par exemple.

catégories autorisées chaussures et chaussettes

mais si je tente d'ajouter un élément végétal à l'inventaire, il devrait me donner un avertissement disant « catégorie non permis ../ nItem ne sera pas ajouté à l'inventaire » ... .. puis passez à l'article suivant ....

Voici 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 ne suis pas en utilisant les conseils autour correctement. ...

Répondre

0

Qu'est-ce que vous voulez probabily est comething 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 de « chaussures » ou « chaussettes », nous ne demandons pas la méthode procéder().

Questions connexes