[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] How to prevent AJDT from weaving some class?

Hi Andy,

The project is just for testing how to use aop.xml to avoid weaving JUnit test code. Sorry for packing all files in a hurry without finding the error in aop.xml.

I use beforeAddNewData() advice to test the difference "call" and "execution". I'm still a newbie in AspectJ. Because I only call it in test code, the pointcut is "call", and aop.xml excludes the test code, not matching is exactly what I expected.

Ok. I will do a full build in the future.

I do need to set -xmlConfigured in my eclipse. How can I help to figure out where is wrong?

Here is my AJDT version:

  AJDT Plugin Development Tools 2.0.2.e35x-20100105-0900 org.eclipse.ajdt.pde.build.feature.group



On Fri, May 21, 2010 at 8:45 AM, Andy Clement <andrew.clement@xxxxxxxxx> wrote:
I'm afraid I have no idea what your project is supposed to do - you
didn't say.  It builds for me and the tests all run. (there was an
syntax error in the aop.xml file I had to fix - it wasn't valid xml).

Should some piece of advice not be matching somewhere?

I found the beforeAddNewData() advice in the MyAspect was not matching
anything, when I remove the scope setting in aop.xml then it starts
matching the testcode, when I add the scope setting back into the
aop.xml then it stops matching the testcode - that seems the right
behaviour??  What do you see differently to that?

You will need to do full builds between edits on the aop.xml file, we
don't support incremental compilation with aop.xml editing.  So I see
a few issues that you should raise as bugs:

-xmlConfigured should be turned on automatically.  That code is
already in AspectJ, if it isn't working, that is a bug.  You don't
need to set it in the IDE.

a full build should be kicked off for any edit/save of an aop.xml file
actively in use on the aop.xml management page.  This is an AJDT


On 20 May 2010 12:14, Benyi Wang <bewang.tech@xxxxxxxxx> wrote:
> I found what was wrong when I switched to aop.xml management: I didn't add
> -xmlConfigured into "Project properties->AspectJ
> Compiler->Other->Non-standard compiler options". After adding it, the
> project is compiled correctly.
> Then both of changes exclude my Junit test classes from weaving:
> <aspect name="MyAspect" scope="!com.foo.bar.Test.*Test"/>
> and
> <weaver>
> <exclude within="com.foo.bar.Test.*Test"/>
> </weaver>
> I also did a test. If I remove -xmlConfigured, the project cannot be
> compiled correctly. src/test/java/com/foo/bar/Test/AjdtWeavingTest.java is
> not compiled. The files under src/main/java are compiled, but not be weaved.
> I attached my project here. Not sure if this is a bug.
> Thanks a lot.
> On Thu, May 20, 2010 at 11:45 AM, Andy Clement <andrew.clement@xxxxxxxxx>
> wrote:
>> > It seems that AJDT tries to weave all classes in a project by default.
>> > I attached files in a test project.
>> yes
>> > When I use "call" for pointcuts of interface Addable in MyAspect, AJDT
>> > tries
>> > to weave the interface calls of the mock object. Sometimes I don't want
>> > the
>> > advices in my unit test code, for example, advices from the log aspect.
>> > How can I prevent AJDT from weaving junit test case classes?
>> You can set the within clauses for your aspect to exclude the
>> testcode.  Or you can try out aop.xml management:
>> > If I add aop.xml into project properties->AspectJ Builder->aop.xml
>> > Management, some wired things happens:
>> >
>> > all aspectj advice markers are gone. You need to clean the project
>> > first,
>> > otherwise you may see the markers are still there.
>> When you switch to using aop.xml files to control the builder you are
>> switching from the default mode of 'all aspects included' to an opt-in
>> model where only those specified in your aop.xml file are included.
>> It is a bug that there wasn't a clean when you made the switch (want
>> to raise it?)
>> This feature is intended to help users developing aop.xml files that
>> they will later use for load-time weaving, hence the switch to opt-in.
>> > if you clean the project "Project->clean...", only the files under
>> > src/main/java are compiled, src/test/java are not compiled.
>> Don't really understand that - the choice of aop.xml shouldn't affect
>> what gets compiled... is there an entry in the error log saying why
>> compilation failed?
>> > remove aop.xml from aop.xml management, everything comes back.
>> When you had switched to aop.xml management and defined an aop.xml
>> file that mentioned the aspects you wanted woven, did it weave
>> anything?
>> aop.xml management is the feature you want, it allows you to set a
>> scope for an aspect so that you could avoid weaving your tests with
>> your aspects.
>> <aspect name="MyAspect" scope="!com.foo.tests..*"/>
>> aop.xml management is still under development right now.
>> Andy
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
aspectj-users mailing list