Wyobraźmy sobie następujący aspekt: Czy można pobrać instancję obiektu wykonującą wywołanie metody z AspectJ?
aspect FaultHandler {
pointcut services(Server s): target(s) && call(public * *(..));
before(Server s): services(s) {
// How to retrieve the calling object instance?
if (s.disabled) ...;
}
}
punktu przekroju przechwytuje wszystkie połączenia metod publicznych Server
i prowadzi porady before
tuż przed każdy z nich o nazwie.
Czy jest możliwe pobranie instancji obiektu wykonującej wywołanie do publicznej metody Server
w poradniku before
? Jeśli tak, w jaki sposób?
Na pewno "o" będzie rozmówcą mojej metody? Nawet jeśli metoda serwera jest wywoływana z kodu statycznego? – JVerstry
@JVerstry: The [documentation] (http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html) stwierdza, że 'ten' punktcut" nie będzie dopasowywał żadnych punktów łączenia z kontekstów statycznych . " –
Myślę, że dokumentacja oznacza "w przypadku statycznego wykonania metody, nie ma tego, więc nie można go przechwycić za pomocą tego()". –