I am weaving the spring-mvc jar, as the code I am trying to wrap is from the Spring-MVC jar. I believe the equivalent of the maven configuration parameters
<weaveDependencies> <weaveDependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </weaveDependency> </weaveDependencies> is: ajc -inpath <path-to spring-mvc.jar>. So, I am expecting it to be weaving the Spring libraries. I just do not understand why it is failing on those classes which do not call *.getResources(). I do not seem to be able to properly figure out how to code the within() clause appropriately. Can you please advise? I am trying to create a pointcut around org.springframework..SpringWildcardServletTilesApplicationContext.getResources(..) when called from within org.apache.tiles.extras.renderer.OptionsRenderer class. At the moment, my ugly if() condition checks the stacktrace to validate that OptionsRenderer is the calling method, as I was unable to figure out the correct syntax for getting the within() clause to work appropriately. I thought it would be: @Pointcut("within(org.apache.tiles.extras.renderer.OptionsRenderer) && call( * org.springframework..SpringWildcardServletTilesApplicationContext.getResources(..))") but that does not seem to be accurate. Any advice would be appreciated. Thanks, Eric On Tue, Nov 19, 2013 at 8:40 PM, Andy Clement <andrew.clem...@gmail.com>wrote: > Seems a little odd it is saying it is weaving into Spring classes: > > " when weaving type org.springframework.web.servlet.view.document. > AbstractPdfView" > > Are you somehow passing in more than the application? I don't speak maven > so can't comment directly on the pom contents. You could include a > within() clause in your pointcut to limit it to the packages you really > know contain the calls then it won't be looking at all the calls made > everywhere. > > cheers, > Andy > > > > On 14 November 2013 19:58, Eric B <ebenza...@gmail.com> wrote: > >> I've got a Spring-MVC 3.2.4 mavenized project, where I've run into the >> need to weave an Aspect into a Spring-MVC class. I'm able to run the >> aspect and the webapp through Eclipse without any problems (Tomcat), but >> when I try to package the war from the command line, AspectJ throws a whole >> bunch of weaving errors: >> >> mvn compile >> ... >> ... >> [ERROR] can't determine superclass of missing type >> com.lowagie.text.Document >> when weaving type >> org.springframework.web.servlet.view.document.AbstractPdfView >> when weaving classes >> when weaving >> when batch building BuildConfig[null] #Files=75 AopXmls=#0 >> [Xlint:cantFindType] >> [ERROR] can't determine superclass of missing type >> com.lowagie.text.Document >> when weaving type >> org.springframework.web.servlet.view.document.AbstractPdfView >> when weaving classes >> when weaving >> when batch building BuildConfig[null] #Files=75 AopXmls=#0 >> [Xlint:cantFindType] >> ... >> ... >> ... >> >> I have no com.lowagie.text.* dependencies listed in my pom, as I am not >> using and PDF stuff. What I don't understand is why AspectJ can properly >> weave the class when running through Eclipse, but not when I try to compile >> it from the command line. >> >> >> pom.xml (relevant snippets - using aspectJ 1.7.3): >> >> <dependency> >> <groupId>org.aspectj</groupId> >> <artifactId>aspectjrt</artifactId> >> <version>${aspectj.version}</version> >> </dependency> >> <dependency> >> <groupId>org.aspectj</groupId> >> <artifactId>aspectjweaver</artifactId> >> <version>${aspectj.version}</version> >> </dependency> >> >> .... >> .... >> >> <plugin> >> <groupId>org.codehaus.mojo</groupId> >> <artifactId>aspectj-maven-plugin</artifactId> >> <version>1.2</version> >> <!-- NB: do not use 1.3 or 1.3.x due to MASPECTJ-90 and do not use 1.4 >> due to declare parents issue --> >> <dependencies> >> <!-- NB: You must use Maven 2.0.9 or above or these are ignored (see >> MNG-2972) --> >> <dependency> >> <groupId>org.aspectj</groupId> >> <artifactId>aspectjrt</artifactId> >> <version>${aspectj.version}</version> >> </dependency> >> <dependency> >> <groupId>org.aspectj</groupId> >> <artifactId>aspectjtools</artifactId> >> <version>${aspectj.version}</version> >> </dependency> >> </dependencies> >> <executions> >> <execution> >> <goals> >> <goal>compile</goal> >> <goal>test-compile</goal> >> </goals> >> </execution> >> </executions> >> <configuration> >> <outxml>true</outxml> >> <aspectLibraries> >> <aspectLibrary> >> <groupId>org.springframework</groupId> >> <artifactId>spring-aspects</artifactId> >> </aspectLibrary> >> </aspectLibraries> >> <weaveDependencies> >> <weaveDependency> >> <groupId>org.springframework</groupId> >> <artifactId>spring-webmvc</artifactId> >> </weaveDependency> >> </weaveDependencies> >> <source>${java.version}</source> >> <target>${java.version}</target> >> </configuration> >> </plugin> >> >> >> >> The Aspect declaraion: >> >> @Aspect >> public class OptionsPatch { >> @Pointcut("call( * >> org.springframework..SpringWildcardServletTilesApplicationContext.getResources(..)) >> && if()") >> public static boolean getResources(JoinPoint.EnclosingStaticPart >> esp) { >> if( /* some condition here */ ) >> return true; >> else >> return false; >> } >> >> >> @Around("getResources(enc)") >> public Object unboxIOException(ProceedingJoinPoint pjp, >> JoinPoint.EnclosingStaticPart enc) throws Throwable { >> try { >> return pjp.proceed(); >> } catch (IllegalArgumentException e) { >> throw e; >> } >> } >> } >> >> >> >> Do I have to write the pointcut in a more precise manner to avoid this >> problem? Why does it work within the editor but not from the cmd line? >> >> >> Thanks, >> >> Eric >> >> _______________________________________________ >> aspectj-users mailing list >> aspectj-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users