Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine which aspects hook into a given class

Tags:

java

aop

aspectj

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);
like image 266
mibollma Avatar asked Dec 30 '11 19:12

mibollma


1 Answers

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.

like image 121
jayunit100 Avatar answered Sep 20 '22 00:09

jayunit100