Is it possible to determine which aspects hook into a given class and to gain access to their instances?
Something like:
Foo foo = new Foo();
List<Object> aspects = getAllAspectsOf(foo);
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
First, you most likely would not be able to do any such monitoring using existing Aspect APIs, because Aspect wrappers that intercept calls with the specific purpose of NOT being tied to any one particular component, so there would not be any natural way to detect intercepting aspects.
That said – there might be a way you could wrap aspects inside of some sort of strategy class, however, the amount of work to maintain this would be quite significant.
http://www.eclipse.org/aspectj/doc/released/faq.php#q:benefits
Aspects are often described as “being on top of” or “woven in with” your other code, i.e. at runtime or build time.
http://asm.ow2.org/users.html
Thus, your code would not typically be “aware” of any such aspect oriented features, given this paradigm for the implementation of aspects.
However, if you wanted traceable aspects , you could implement some Aspect “like” features using standard java and dependency injection – that is, by loading injected modules at runtime which implement some of the cross-cutting functionality that an aspect would implement … but, i suspect, if you are really doing serious aspect oriented code, such an approach would fall short of your aspect oriented requirements.