I¹m definitely familiar with using interfaces for good measure, and I¹m theoretically familiar with annotations; however, I don¹t have real world project experience using annotations heavily. Can you point me to a good example that combines AJ w/ annotations? I can¹t find any combination examples in Colyer et al.¹s book from the Eclipse Series. AspectJ in Action looks pretty good. Does anyone know if it does a better job combining these two features? Or maybe some other source?
From: Dean Wampler <[EMAIL PROTECTED]> Organization: Aspect Programming Reply-To: <[email protected]> Date: Sun, 25 Feb 2007 12:10:43 -0600 To: <[email protected]> Subject: Re: [aspectj-users] Frustrated Newbie I suggest picking one of your simpler cross-cutting concerns first to see how it goes. Perhaps time-boxing your experiment will keep you from taking too long, should it not work out! In general, don't forget the important lessons we've learned from pure OOD, especially the value of working with interfaces and annotations, which are another form of abstraction. In particular, when writing aspects and especially pointcuts for these production aspects, try to use only interfaces or annotations that are not likely to change often. A common pitfall in the early days of AOP and AspectJ was to hard-code concrete details of package, class, and method names. As soon as someone refactored one of these names, the aspect broke. Our tools aren't good enough yet to handle these refactorings robustly. (Your example below used interfaces; the point is worth emphasizing, though!) Of course, this means that the classes you want to advise must implement the interfaces and or have the annotations you need for your pointcuts. Exposing such abstractions is a good idea, anyway! Good luck and don't hesitate to ask for help on the list as you proceed. dean Kevin F wrote: > Re: [aspectj-users] Frustrated Newbie Thanks. > > Actually, I want to use it to implement various mission critical orthogonal > crosscuts to dramatically improve project velocity for a deadline in early > April. Do you have experience using AJ for mission critical functionality? I > spent 30+ hours on this problem in the 4 days so I will be able to devote time > to fixing problems as long as I can observe the effects of my AJ changes. How > likely is it that I¹ll run into any more circumstances where my pointcuts > filter far too many joinpoints such as my example below (118 when >3000 should > have been found)? Debugging problems of the nature ³the ubiquitous framework > chooses not to call my code² are extreme timewasters. > > Kevin > > > > From: Dean Wampler <[EMAIL PROTECTED]> > <mailto:[EMAIL PROTECTED]> > Organization: Aspect Programming > Reply-To: <[email protected]> <mailto:[email protected]> > Date: Sun, 25 Feb 2007 10:51:52 -0600 > To: <[email protected]> <mailto:[email protected]> > Subject: Re: [aspectj-users] Frustrated Newbie > > I'm glad you made some headway. I'm not sure if your original installation > process caused problems. I think it should have worked, but I've only used the > feature installer myself. > > I do believe it's wise to proceed cautiously, since as you've seen, it can > take some effort to understand the join point language and other aspects > (pardon the pun ;) of AspectJ. I don't know what other aspects you've tried to > use, but "policy enforcement" aspects like the one you posted are a good place > to start, since they don't implement production functionality, but provide a > supporting development role. As you build confidence, you can proceed to more > "missing critical" aspects. > > Best wishes. > > dean > > Kevin F wrote: > >> Re: [aspectj-users] Frustrated Newbie Paulo & Dean, thank you for your >> replies. I had given up and was actually in the process of purging AspectJ >> from my project when they arrived. So, I copied my AspectJ-free project to a >> new directory and used the Eclipse option to convert to AJ project. I didn¹t >> think your suggestions were going to help since the failure I had been >> getting were on the expression ³within(com.mycompany..*+)²; however, I tried >> anyway. >> >> Amazingly, things seemed to behave exactly as they should. With this happy >> event, I tried the tests from my original posting. At the time of posting, >> the pointcut ³within(com.mycompany..*+)² allowed 118 join points. Now, it >> allows > 3000 which is approximately what I expected. >> >> When I thought back on my installation within Eclipse 3.2.1, I downloaded >> AJDT from eclipse.org, extracted the file, copied the features to >> .../eclipse_3.2.1/features/, and copied the plugins to >> .../eclipse_3.2.1/plugins. When I installed AJDT for Eclipse 3.3M5, I used >> the feature installer. Is it possible that an improper installation the >> first time caused my AJ project to be setup incorrectly and caused all my >> problems? >> >> Due to my 4 days of pain, I am a bit timid at the moment; however, I want to >> believe that AJ is stable and reliable because >> >> >> 1. it is used in a lot of projects >> 2. it has the awesome power (for good or bad) to make massive changes to the >> code that I write >> 3. >> 4. >> >> Thanks again for the responses, >> Kevin >> >> >> >> >> From: Kevin F <[EMAIL PROTECTED]> >> <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED]> >> Reply-To: <[email protected]> <mailto:[email protected]> >> <mailto:[email protected]> >> Date: Sun, 25 Feb 2007 08:07:22 -0500 >> To: <[email protected]> <mailto:[email protected]> >> <mailto:[email protected]> >> Conversation: Frustrated Newbie >> Subject: [aspectj-users] Frustrated Newbie >> >> I¹ve been at this for 4 days now. I had some good luck with a few initial >> cases where I was able to clean up some code and verify through testing it >> worked like a charm. I made a couple minor tweaks to those which broke them >> giving the technology an unreliable feel. I¹m willing to write that off as >> inexperience. >> >> So I continued on and tried to implement some simple enforcement policies >> that I read in the book from the Eclipse Series (trying to support >> development by buying products and all). It isn¹t working at all and my >> frustration level trying to implement even simple enforcement policies is off >> the scale. >> >> Yesterday, I posted the following to the AspectJ newsgroup without a response >> yet. I continued researching on my own, even using the latest milestone >> AspectJ release for Eclipse 3.3M5. Still no luck. >> >> --------------- >> Newsgroup post: >> --------------- >> >> I'm new to AspectJ so please no flames. I'm using AJDT for Eclipse 3.2.1 >> and have been following the details from the "eclipse AspectJ" book. >> >> I'm trying to enforce simple errors such as "It is an error to implement any >> listener interface unless you also implement interface Foo." To do this, I >> want to try: >> >> pointcut listeners() : within(*..*Listener*+); >> pointcut myCode() : within(com.mycompany..*+); >> pointcut mySpecialInterface() : within(com.mycompany.Foo+); >> declare error: listeners() && myCode() && !mySpecialInterface() >> : "All listeners must implement Foo"; >> >> >> Since this did not work, I tried various experiments. So, I tried the >> following: >> >> declare error: within(*..*Listener*+) >> : "A"; >> declare error: within(com.mycompany..*+) >> : "B"; >> declare error: within(*..*Listener*+) && within(com.mycompany..*+) >> : "A intersect B"; >> declare error: within(*..*Listener*+ && com.mycompany..*+) >> : "A intersect' B"; >> declare error: within(*..*Listener*+) || within(com.mycompany..*+) >> : "A union B"; >> declare error: within(*..*Listener*+ || com.mycompany..*+) >> : "A union' B"; >> >> A seems to be tagged correctly on all classes that implement any interface >> with the word Listener in its name. >> >> B seems to tag only a fraction of the classes I have written. >> >> A intersect B and A intersect' B both result in no tags. >> >> A union B and A union' B both seem to result in the union of what A and B >> tagged above. >> >> >> AOP seems so powerful yet so cryptic. Can anybody help? >> >> >> >> >> >> _______________________________________________ >> 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 >> >> > > > -- > Dean Wampler's Signature Dean Wampler, Ph.D. > dean at aspectprogramming.com > objectmentor.com <http://www.objectmentor.com> > aspectprogramming.com <http://www.aspectprogramming.com> > contract4j.org <http://www.contract4j.org> > > I want my tombstone to say: > Unknown Application Error in Dean Wampler.exe. > Application Terminated. > Okay Cancel > > > > _______________________________________________ > 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 > -- Dean Wampler's Signature Dean Wampler, Ph.D. dean at aspectprogramming.com objectmentor.com <http://www.objectmentor.com> aspectprogramming.com <http://www.aspectprogramming.com> contract4j.org <http://www.contract4j.org> I want my tombstone to say: Unknown Application Error in Dean Wampler.exe. Application Terminated. Okay Cancel _______________________________________________ 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
