I am still struggling with this. I am not sure what you mean by using target() 
to pick the object on which the call is made and checking it.

Just to be sure we are on the same page. I am trying to figure out how to match 
a join point of a new JTextField call with a specific annotation above it.
________________________________________
From: [email protected] [[email protected]] On 
Behalf Of Ramnivas Laddad [[email protected]]
Sent: Thursday, July 01, 2010 1:31 PM
To: [email protected]
Subject: Re: [aspectj-users] Question about @AspectJ and what it can do

It looks like you are annotating a field with the UndoableJTextField 
annotation. If so, @annotation will select get/set join points associated with 
that field. Your other pointcut is picking up a call join point. Since a join 
point can be of exactly one kind, && leads to no match. You may have to use 
target() to pick the object on which the call is being made and check if a 
field (by searching through the enclosing class using reflection) matches that 
object. Then you can grab annotations from it.

-Ramnivas

On Thu, Jul 1, 2010 at 8:56 AM, Kashtan, Daniel 
<[email protected]<mailto:[email protected]>> wrote:
I have been referring to those guides a lot so far :)

Also I believe I am very close to getting the desired behaviour I have been 
after. I don't think I need @AsepctJ at all.

pointcut testPC1() : @annotation(UndoableJTextField);

pointcut testPC2(String s, int c) : call(javax.swing.JTextField.new(String, 
int)) && args(s, c);

after(String s, int c) : testPC2(s, c) && testPC1()
{
       System.out.println("undoableJTextField");
}


TestPC1() will match the JComponents everywhere they are used if they have the 
correct annotation and testPC2() will match wherever I create a new JTextField 
with those arg types, but I cannot get an intersection of the two. The && does 
not give me any matches. I am having a hard time finding the right syntax to 
get that intersection, any suggestions?

________________________________________
From: 
[email protected]<mailto:[email protected]> 
[[email protected]<mailto:[email protected]>] 
On Behalf Of Ramnivas Laddad 
[[email protected]<mailto:[email protected]>]
Sent: Thursday, July 01, 2010 11:43 AM
To: [email protected]<mailto:[email protected]>
Subject: Re: [aspectj-users] Question about @AspectJ and what it can do

You might want to read
http://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html
and
http://www.eclipse.org/aspectj/doc/released/progguide/index.html

You might also want to pick a good book on AspectJ :-)

-Ramnivas

On Thu, Jul 1, 2010 at 7:09 AM, Kashtan, Daniel 
<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
 wrote:
The reason I would like to use @aspectj could be because of naiveness when it 
comes to AspectJ. The main goal I am pursuing is easy to show with some code.

@Undoable
JTextField tf = new JTextField();

@Undoable
JButton tf = new JButton();

I would like to have the aspect get a reference to the new object created and 
have a clear and compact marker for showing in my code which JComponents are 
undoable.

You mentioned that I could use a target pointcut, but I am looking at the docs 
and I still don't get how that one works yet. Would it accomplish what I need?
________________________________________
From: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>
 
[[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>]
 On Behalf Of Ramnivas Laddad 
[[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>]
Sent: Wednesday, June 30, 2010 9:48 PM
To: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>
Subject: Re: [aspectj-users] Question about @AspectJ and what it can do

The code you shown can be mapped to @AspectJ just fine.

As for annotations, in Java (and thus in AspectJ) you cannot put annotations on 
a call site. Differentiating between JTextField and JButton is easy--all you 
need  is a target() pointcut.

BTW, is there a reason for pursuing the @AspectJ syntax? The traditional syntax 
is more powerful and there is nothing that you can do with @AspectJ that you 
cannot with traditional.

-Ramnivas

On Wed, Jun 30, 2010 at 5:21 PM, Kashtan, Daniel 
<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>>
 wrote:
In traditional AspectJ I would do something like below. I didn't get one 
working, but it was something like this.

after(String s) : call(javax.swing.JTextField.new(s)) && args(s) && 
if(s.equals("textField1") //find out where the JTextfield with text 
"textField1" is instantiated, and run the code below
{
 //code here (is there a technical term to call the code block in here?)
 undoService.addCallback(new ActionListener()
 {
        public void actionPerformed(ActionEvent ae)
       {
        undoService.addEdit(new UndoableEditDocumentCustom(textField));
        }
 });
}

The point is to find the JTextField with a starting text of "textField1", which 
is not a good way to identify the JTextField I want, but this is just for proof 
of concept purposes. Once the correct JTextField is found, execute the code. 
With annotations, would it be simple to add this code for a specific 
JComponent? Can the annotation go right on top of the JComponent instantiation 
code? Can the annotation do some extra processing to know if the JComponent is 
a JTextField or JButton so I can call specific code for both? Sorry if I am not 
perfectly clear, I am still really green.
________________________________________
From: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
 
[[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>]
 On Behalf Of Ramnivas Laddad 
[[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>]
Sent: Wednesday, June 30, 2010 5:30 PM
To: 
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
Subject: Re: [aspectj-users] Question about @AspectJ and what it can do

Can you show what you intent to do with the traditional syntax? That will help 
in showing if and how it can be mapped to @AspectJ.

-Ramnivas

On Wed, Jun 30, 2010 at 1:47 PM, Kashtan, Daniel 
<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>>>
 wrote:
Hey all,

I have AspectJ working real nice right now and I would like to see if @AspectJ 
can let me do those same things in a slicker fashion. I can illustrate want I 
am thinking about by showing my function:

undoService.addCallback(new ActionListener()
{
    public void actionPerformed(ActionEvent ae)
    {
    undoService.addEdit(new UndoableEditDocumentCustom(textField));
    }
});

Right now my actionPerformed is hard-wired to send my undoService that 
particular UndoableEdit for a JTextfield. I'd like to automate the process of 
adding these edits. Could I possibly add an annotation above my JComponents 
that would be able to call the code above based on the type of JComponent it 
is? I think I know how to do this in AspectJ, but I am having a hard time 
grasping how @AspectJ works, so any suggestions or pointers would be great :)

This e-mail and any files transmitted with it may be proprietary and are 
intended solely for the use of the individual or entity to whom they are 
addressed. If you have received this e-mail in error please notify the sender.
Please note that any views or opinions presented in this e-mail are solely 
those of the author and do not necessarily represent those of ITT Corporation. 
The recipient should check this e-mail and any attachments for the presence of 
viruses. ITT accepts no liability for any damage caused by any virus 
transmitted by this e-mail.
_______________________________________________
aspectj-users mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>><mailto:[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
[email protected]<mailto:[email protected]>
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to