2017-03-18 2 views
1

J'ai cet aspect:Convertir aspect notation AspectJ natif

public privileged aspect Teste { 
private ISupermarket supermarket; 

@AfterReturning(pointcut = "execution(* ca1.business.SupermarketFactory.createSupermarket(..))", returning = "result") 
    public void afterCreateSupermarket(JoinPoint joinPoint, Object result) { 
     supermarket = (ISupermarket) result; 
    } 
} 

La chose est que je veux le coder en notation AspectJ natif.

je cherchais, mais le plus proche je suis arrivé était à ceci:

void after() returning(result) : pointcut(* ca1.business.SupermarketFactory.createSupermarket(..)) { 
    supermarket = (ISupermarket) result; 
} 

Mais cela me donne des erreurs car il est pas bien codé.

Quelqu'un peut-il m'aider avec ceci?

Répondre

1

j'ai réussi à trouver la réponse:

pointcut afterCreateSupermarket(): 
    call(ISupermarket ca1.business.SupermarketFactory.createSupermarket(..)); 

after() returning(Object result): afterCreateSupermarket() { 
    supermarket = (ISupermarket) result; 
} 
+0

Pourquoi trouvez-vous pas seulement utiliser 'after() renvoyant (Object ISupermarket)' et se débarrasser de la distribution? – kriegaex

1

Si vous voulez vous débarrasser de la distribution et la pointcut nommée, vous pouvez aussi le faire:

after() returning(ISupermarket result) : call(ISupermarket ca1.business.SupermarketFactory.createSupermarket(..)) { 
    supermarket = result; 
}