RE: [aspectwerkz-user] Getting attribute parameter in an advice
"Sameer Pokarna" <[email protected]> Mon, 24 Apr 2006 16:42:46 +0530
| Newsgroups | gmane.comp.java.aspectwerkz.user |
|---|---|
| Message-ID | <[email protected]> |
Yes, this is possible, but I want to make this extensible, in that the user can add aspects, and pass the class.method() to invoke for a particular advice from the bootstrap aspect. I would have liked the user to add aspects, and implement aspect sub-classes, and specify the class.method() to invoke for these as params/attributes. Actually, after giving more thought to this, the "attribute" approach would also probably not have solved my problem because in my aspect class, I still need to get attribute from the advice name, and this reduces the flexibility that I want. Regards, Sameer > -----Original Message----- > From: Alexandre Vasseur [mailto:[email protected]] > Sent: Monday, April 24, 2006 3:53 PM > To: [email protected] > Subject: Re: [aspectwerkz-user] Getting attribute parameter in an advice > > Think about aspect name as a class name. You can't have duplicates in > a system hierarchy. > You can probably mimic advice attribute with some naming convention > aspect A { > advice adv() {} > advice ice() {} > } > <aspect ...> > <param name="adv.yourparam" .... > <param name="ice.yourparam" ... > <advice //adv > <advice //ice > (pseudo code) > > Alex > > On 4/24/06, Sameer Pokarna <[email protected]> wrote: > > I want multiple advices in a single aspect, and each advice getting it's > own > > value of the param/attribute, hence cannot use the param name, value > option. > > My bootstrap aspect will be used to identify the context information of > the > > call by looking at this value. > > > > AspectWerkz does not allow defining multiple aspects with same name in > the > > same system, and hence, what this means is that I have to define a > single > > aspect in each system. > > > > The ability to specify attribute seems to be a powerful feature, why was > it > > deprecated? > > > > > > Thanks, > > Sameer > > > > > -----Original Message----- > > > From: Alexandre Vasseur [mailto:[email protected]] > > > Sent: Sunday, April 23, 2006 3:46 PM > > > To: [email protected] > > > Subject: Re: [aspectwerkz-user] Getting attribute parameter in an > advice > > > > > > You should use <aspect ..><param name= value= /> instead. > > > See > > > > http://aspectwerkz.codehaus.org/xml_definition.html#Passing_parameters_to_ > > > aspects > > > > > > I guess this advice level attribute in the dtd is a deprecated thing. > > > Alex > > > > > > On 4/20/06, Sameer Pokarna <[email protected]> wrote: > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > I am trying to pass parameters to the aspects, however, I would like > to > > > get > > > > finer granularity than the "param" support in aspects, i.e. I have > > > multiple > > > > advices declared in a single aspect, and I would like to get > different > > > > values of parameters for each invocation of advice. > > > > > > > > > > > > > > > > Aspectwerkz2.dtd specifies an "attribute" attribute to the advice > XML > > > > element. I was trying to write a code to enable me to do this. > > > > > > > > I am trying to use the AdviceDefinition object to retrieve the > attribute > > > > using the getAttribute(). So, the code snippet that I am trying to > use > > > is: > > > > > > > > > > > > > > > > SystemDefinition sd = > > > > > > > > SystemDefinitionContainer.getDefinitionFor > > > > > > > > (Thread.currentThread().getContextClassLoader(), > > > > "systemname"); > > > > > > > > Collection coll = sd.getAdviceDefinitions(); > > > > > > > > Iterator itr = coll.iterator(); > > > > > > > > while (itr.hasNext()) > > > > > > > > { > > > > > > > > AdviceDefinition ad = (AdviceDefinition)itr.next(); > > > > > > > > if ("advicename".equals(ad.getName())) > > > > > > > > { > > > > > > > > System.out.println("ad.getAttribute() = " + > > > > ad.getAttribute()); > > > > > > > > > System.out.println("ad.getExpressionInfo().toString() = > > > " + > > > > ad.getExpressionInfo().toString()); > > > > > > > > } > > > > > > > > } > > > > > > > > > > > > > > > > I am getting the expression correctly, but the advice "attribute" as > > > null. > > > > > > > > > > > > > > > > The aop.xml looks something like this: > > > > > > > > > > > > > > > > <system id="systemname"> > > > > > > > > > > > > > > > > <package name="."> > > > > > > > > <aspect class="BootstrapAspect" deployment- > model="perJVM"> > > > > > > > > > > > > > > > > <pointcut name="." expression="."/> > > > > > > > > > > > > > > > > <advice name="advicename" type="around" > > > > > > > > bind-to="." > > > > > > > > attribute="attribValue"/> > > > > > > > > > > > > > > > > . > > > > > > > > > > > > > > > > I cannot see the method setAttribute() being called from anywhere in > the > > > > aspectwerkz codebase. > > > > > > > > Is this feature supported/working? > > > > > > > > > > > > > > > > > > > > > > > > Thanks and regards, > > > > > > > > Sameer > > > > > > > > > > > > > > > >