Hi S (?), you can get the field's name from the joinpoint's signature. I am not sure if it's qualified but if it's not then you can qualify it yourself with the class of the target object. This page here could help:
http://blogs.codehaus.org/people/tirsen/archives/000690_undo_in_aspectj.html Eric 2009/4/22 100ji <[email protected]>: > Hi Andrew, > > > On Wed, Apr 22, 2009 at 11:55 AM, Andrew Eisenberg <[email protected]> > wrote: >> Hi, >> >> A little confused about what you mean by #1. What is the fully >> qualified name of a local variable? Or are you only looking to do >> this for fields? If so, how are you planning on distinguishing them? >> > > Thanks for the response. Sorry about the ambiguity. I need a fully > qualified qualified name if it's a field and the name if it's a local > variable. I am doing some dynamic analysis to figure out which fields > of type java.util.collection in an object are shared by multiple > threads. For a successful analysis, I have to also take aliases into > account. For this I am capturing the object pointed by each of these > fields and consider all fields that point to same object as aliases. > Even though this technique is not general it works for me. > >> It is not hard to get the type of the field/variable: >> thisJoinPointStaticPart.getSignature().getDeclaringType() >> >> But getting its name and the class that declares it is harder. This >> is just not information that AspectJ stores. One of the reasons that >> this is not stored is because aliasing can make this information >> meaningless. For example: >> >> class C1 { >> Set s = new HashSet(); >> >> private void doNothing() { >> Set t = s; >> t.add(null); >> s.add(null); >> } >> } >> >> Here objects t and s are the same, but have different names. What >> would you want to do here? Do you really want to know where the >> variable was declared or do you want to know what the variable points >> to? > > I want to know the name of the variable/field and what it points > to(it's value). If there are aliasing effects(s and t), that's ok. I > can work around that. Also, since one can work around this limitation, > I think AspectJ should expose this information. This makes AspectJ a > good tool using which one can implement dynamic program analysis. Btw, > is anyone aware of any publicly available dynamic program analysis > tools built on top of AspectJ. > > You said that getting the name of the local variable/field and the > class is much harder. Which thankfully means it's not impossible. How > can I get that information? > > Thanks, > -S- > >> >> On Wed, Apr 22, 2009 at 12:31 AM, 100ji <[email protected]> wrote: >>> Hi all, >>> >>> I am implementing some dynamic programming analysis using AspectJ. For >>> example, consider the program: >>> >>> Set<Object> s = new HashSet<Object>(); >>> s.add(o1); >>> s.remove(o1); >>> >>> In this program at each add and remove method call, I need the >>> following information: >>> >>> 1) a string showing the type of s and a fully qualified name of the >>> field with the name of the field. "java.util.Set com.x.y.z.a.b.c.s". >>> 2) a reference to object o1. >>> 3) a reference to set s. >>> 4) The lineno and the file name at which the call is taking place. >>> >>> I can get (2), (3) and (4) using the argument, target and >>> thisJoinPoint.getStaticpart.getLineNo() respectively. How can I get >>> (1) the name of the field s and it's type from a point cut? >>> >>> Thanks, >>> -S- >>> _______________________________________________ >>> aspectj-users mailing list >>> [email protected] >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >>> >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > -- Eric Bodden Sable Research Group, McGill University Montréal, Québec, Canada _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
