AspectJ советы и советы - PullRequest
       44

AspectJ советы и советы

0 голосов
/ 15 мая 2011

Я должен применить политику, выдающую предупреждение, если добавляются элементы, не принадлежащие к определенной категории, кроме трех разрешенных и запрещающих такие добавления .....

Пока я могу найти предметы и выдать предупреждение .... но не уверен, как остановить их добавление ....

Например,

Разрешенные категории Обувь и носки

но если я попытаюсь добавить овощной предмет в инвентарь, он должен предупредить меня о том, что "категория не разрешена ../ nПункт не будет добавлен в инвентарь" ..... а затем перейти к следующему предмету ...

Это то, что я написал до сих пор .....

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);
    }
}

1 Ответ

4 голосов
/ 15 мая 2011

Почему бы не использовать взамен around.Затем, если они не относятся к правильной категории, вы не переходите в этот метод, поэтому он пропускается, если пропущенный метод просто выполняет добавление.*

Вот пример из AspectJ In Action от Manning Publication.

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;
  }
}

Итак, если вы хотите проверить, следует ли добавлять элемент, если это разрешенная категория, просто позвоните proceed, иначе вы бы просто вернули ноль, возможно.

...