Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-users] weaving code after loops

The good thing about the concrete example is that it makes it
clear that a nice refactoring of your code would be: 

 void simulate() {
    ...
    processPeers(peers);
 }

 void processPeers(Iterator/*<Peer>*/ peers) {
    while(peers.hasNext()) {
        Peer p = (Peer)peers.next();
        processPeer(p);
    }
 }

 void processPeer(Peer p) {
     while(!p.finished()) {
         // process peer data
         // perform actions
     }
}

which makes the code nicer with or without AOP, and makes it
easy to put advice in the different places you want.

> -----Original Message-----
> From: aspectj-users-admin@xxxxxxxxxxx 
> [mailto:aspectj-users-admin@xxxxxxxxxxx] On Behalf Of 
> apel@xxxxxxxxxxxxxxxxxxxxxxx
> Sent: Wednesday, September 29, 2004 9:59 AM
> To: aspectj-users@xxxxxxxxxxx
> Subject: Re: [aspectj-users] weaving code after loops
> 
> Hey Ron,
> the problem I want to manage is a real world problem. To 
> clarify this I
> give a more complex example:
> 
> void simulate()
> {
>    while(peers.hasNext())    // for all peers
>    {
>        Peer p = (Peer)peers.next();
>        while(!p.finished())
>        {
>            // process peer data
>            // perform actions
>        }
>        // at this postion the code should be executed
>    }
> }
> 
> This example is derived from our p2p-simulator. The 
> simulate-method loops
> overs all peers and performs some actions for each peer. After these
> actions I want to include code for sending so called 
> feedback-objects and
> logging. We consider this sending-code as optional. Moreover, 
> this code is
> called in other methods too. So we decided to implement the
> feedback-sending feature as an aspect.
> 
> I hope that helps to understand our problem.
> 
> best regards
> Sven
> 
> 
> > Sven, you're right that there is no AspectJ pointcut to 
> pick out any kind
> > of loop (or if) statement executing. The reason is that 
> pointcuts that
> > picked out specific loops would be brittle in that programmers would
> > expect to be able to change how foo is implemented (e.g., 
> to for(;b;) {
> > ...  } or to while (b&&c) {...}) without changing how 
> aspects work. As
> > Rickard said, why do you want to do this?
> >
> > To use AspectJ with code like this, you could use the extract method
> > refactoring, which would let you name a helper method to 
> describe the post
> > inner-loop behavior you want to advise.
> >
> > Ron Bodkin
> > Chief Technology Officer
> > New Aspects of Software
> > o: (415) 824-4690
> > m: (415) 509-2895
> >
> >
> >> ------------Original Message------------
> >> From: "Sven Apel" <apel@xxxxxxxxxxxxxxxxxxxxxxx>
> >> To: aspectj-users@xxxxxxxxxxx
> >> Date: Wed, Sep-29-2004 9:09 AM
> >> Subject: [aspectj-users] weaving code after loops
> >>
> >> Hello everybody,
> >>
> >> I want to weave code into the following example code:
> >>
> >> void foo()
> >> {
> >> 	boolean a = true;
> >> 	boolean b = true;
> >>
> >> 	while(a == true)
> >> 	{
> >> 		// do something
> >> 		while(b == true)
> >> 		{
> >> 			// do something
> >> 		}
> >> 	}
> >> }
> >>
> >> I want to weave a call to method bar after the inner while-loop:
> >>
> >> void foo()
> >> {
> >> 	boolean a = true;
> >> 	boolean b = true;
> >>
> >> 	while(a == true)
> >> 	{
> >> 		// do something
> >> 		while(b == true)
> >> 		{
> >> 			// do something
> >> 		}
> >> 		bar(); // code to weave
> >> 	}
> >> }
> >>
> >> In current I see no way how I can express this joinpoint 
> using AspectJ.
> >> Has
> >> anybody an idea?
> >>
> >> best regards
> >> Sven
> >>
> >> ------------------------------------
> >> Dipl.-Inf. Sven Apel
> >>
> >> Universität Magdeburg:
> >> Tel.:   +49-(0)-391-67-11899
> >> Fax.:   +49-(0)-391-67-12020
> >> e-mail: apel@xxxxxxxxxxxxxxxxxxxxxxx
> >>
> >> _______________________________________________
> >> aspectj-users mailing list
> >> aspectj-users@xxxxxxxxxxx
> >> http://dev.eclipse.org/mailman/listinfo/aspectj-users
> >>
> >>
> >
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > http://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
> 




Back to the top