Sorry, it has gotten late here... I totally overlooked the "&& is(InnerType)" part. Mea culpa.
Reminder to myself: read more carefully, then answer. And maybe get some sleep. Alexander Kriegisch Am 02.04.2013 um 19:35 schrieb Alexander Kriegisch <alexan...@kriegisch.name>: > True, but com.nested.my.concurrent.*.* will not just match inner classes, but > also regular classes in direct subpackages, which is why I said that if you > need to be more specific you can concatenate subconditions with an "or" > operator. ;-) > > > Am 02.04.2013 um 17:01 schrieb Andy Clement <andrew.clem...@gmail.com>: > >> Or you could use com.nested.my.concurrent.*.* (depending on your needs - >> Alexanders will choose everything below the prefix, the .*.* is more >> selective). If you want to you can also combine it with the type category >> type pattern: >> >> "com.nested.my.concurrent.*.* && is(InnerType)" >> "com.nested.my.concurrent..* && is(InnerType)" >> >> cheers, >> Andy >> >> >> On 2 April 2013 07:51, Alexander Kriegisch <alexan...@kriegisch.name> wrote: >>>> com.nested.my.concurrent.* >>> >>> No, this does neither capture inner classes nor classes in subpackages. You >>> can capture both with >>> >>> com.nested.my.concurrent..* >>> >>> If you need to be more specific, you can still concatenate subconditions >>> with "||". >>> >>> >>> Alexander Kriegisch >>> >>> Am 02.04.2013 um 16:23 schrieb Jean Andre <jean.an...@intact.net>: >>> >>>> Hello Andy, >>>> >>>> Thank you very much for your answer. I've studied your code. It does not >>>> work from our side because we do not specify a particular class but all >>>> classes from a specific packages. We use "com.nested.my.concurrent.*" >>>> which means for us, If I do not make a mistake, all classes from this >>>> package ? and then also the inner classes. But it seems it does not work >>>> like this. >>>> >>>> So the other question, does it mean we have to declare in a separate >>>> aspect (physical file) to avoid such duplicate mixin because in the code >>>> below, the class CiaWebThreadFactory has 2 mixins - One from the >>>> "com.nested.my.concurrent.*" and the second from >>>> "com.nested.my.concurrent.CiaWebThreadFactory.*" >>>> >>>> Then does it means there is no syntax to targeted class and inner class >>>> at the same time by specifying only "all.classes.from.this.package.*" ? >>>> >>>> >>>> @Aspect >>>> public class LoggingConcurrentBehavior extends LoggingBaseBehavior { >>>> >>>> @DeclareMixin("com.nested.my.concurrent.*") >>>> public static Loggable createLoggerDelegate(Object o) { >>>> return new ServantLogger(o.getClass()); >>>> } >>>> >>>> @DeclareMixin("com.nested.my.concurrent.CiaWebThreadFactory.*") >>>> public static Loggable createLoggerDelegate2(Object o) { >>>> return new ServantLogger(o.getClass()); >>>> } >>>> >>>> >>>> Regards, >>>> >>>> Jean ANDRÉ >>>> >>>> >>>> >>>> >>>> >>>> De : Andy Clement <andrew.clem...@gmail.com> >>>> A : aspectj-users@eclipse.org, >>>> Date : 2013-04-01 11:05 >>>> Objet : Re: [aspectj-users] @DeclareMixin with inner class - Syntax >>>> ? >>>> Envoyé par : aspectj-users-boun...@eclipse.org >>>> >>>> >>>> >>>> Sorry I didn't reply earlier, I was at eclipsecon. I tried to scaffold >>>> your situation but it just works for me. Are you loadtime weaving or >>>> compile time weaving? Here is my complete code: >>>> >>>> === CiaWebThreadFactory.java >>>> package com.foo.bar; >>>> >>>> public class CiaWebThreadFactory { >>>> public static void main(String []argv) { >>>> new CiaWebThreadGroup().foo(); >>>> System.out.println("works"); >>>> } >>>> >>>> static class CiaWebThreadGroup { >>>> public void foo() { >>>> Loggable cwtg = ((Loggable)new CiaWebThreadGroup()); >>>> cwtg.log("hello"); >>>> } >>>> } >>>> } >>>> === Loggable.java >>>> package com.foo.bar; >>>> interface Loggable { >>>> void log(String msg); >>>> } >>>> === ServantLogger.java >>>> package com.foo.bar; >>>> >>>> class ServantLogger implements Loggable { >>>> public ServantLogger(Class clazz) { >>>> System.out.println("ServantLogger for "+clazz.getName()); >>>> } >>>> public void log(String message) { System.out.println(message);} >>>> } >>>> === LoggingConcurrentBehaviour.java >>>> package com.foo.bar; >>>> import org.aspectj.lang.annotation.*; >>>> >>>> @Aspect >>>> class LoggingConcurrentBehaviour { >>>> //works: >>>> @DeclareMixin("com.foo.bar.CiaWebThreadFactory.CiaWebThreadGroup") >>>> @DeclareMixin("com.foo.bar.CiaWebThreadFactory.*") >>>> public static Loggable createLoggerDelegate(Object o) { >>>> return new ServantLogger(o.getClass()); >>>> } >>>> } >>>> === >>>> >>>> >>>> ajc -1.5 *.java -d . -showWeaveInfo >>>> Mixing interface 'com.foo.bar.Loggable' (LoggingConcurrentBehaviour.java) >>>> into type 'com.foo.bar.CiaWebThreadFactory$CiaWebThreadGroup' >>>> (CiaWebThreadFactory.java) >>>> Type 'com.foo.bar.CiaWebThreadFactory$CiaWebThreadGroup' >>>> (CiaWebThreadFactory.java) has intertyped method from >>>> 'com.foo.bar.LoggingConcurrentBehaviour' >>>> (LoggingConcurrentBehaviour.java:'void >>>> com.foo.bar.Loggable.log(java.lang.String)') >>>> >>>> and then when I run it: >>>> >>>> java com.foo.bar.CiaWebThreadFactory >>>> ServantLogger for com.foo.bar.CiaWebThreadFactory$CiaWebThreadGroup >>>> hello >>>> works >>>> >>>> In terms of mixin pattern matching I was using: >>>> @DeclareMixin("com.foo.bar.CiaWebThreadFactory.*") >>>> >>>> and that was fine (as you can see from the weave info messages). >>>> >>>> I tried AspectJ 1.7.2 and 1.6.12 - worked on both. >>>> >>>> If you can perhaps edit my code to be more representative of your failing >>>> sample, I could investigate further. I wouldn't be surprised if there were >>>> inner class problems (I half expected my code to fail) but at the moment >>>> I'm not having luck finding problems. >>>> >>>> cheers >>>> Andy >>>> >>>> >>>> On 25 March 2013 10:07, Jean Andre <jean.an...@intact.net> wrote: >>>> Hello, >>>> >>>> A quick question, is it possible to declare Mixin (@DeclareMixin) in order >>>> to have it in inner class ? If yes, we have difficulty to find the right >>>> syntax. >>>> We use aspectJ 1.6.12 under WAS 8.0.0.3 >>>> >>>> Here is our stuff - The mixin is perform well for the class >>>> CiaWebThreadFactory but not for the inner class. We have tried different >>>> syntax without any success. >>>> >>>> Any help ? - and if we have several inner class, is there a shortcu to >>>> catch all of them in a single syntax ? >>>> >>>> Thank you very much. >>>> >>>> >>>> JA >>>> >>>> =========================================== >>>> THE ANNOTATED ASPECT >>>> =========================================== >>>> @Aspect >>>> public class LoggingConcurrentBehavior extends LoggingBaseBehavior { >>>> >>>> @DeclareMixin("com.intact.my.concurrent.*") >>>> public static Loggable createLoggerDelegate(Object o) { >>>> return new ServantLogger(o.getClass()); >>>> } >>>> >>>> ..... >>>> >>>> } >>>> >>>> >>>> package com.intact.my.concurrent; >>>> >>>> ==================================================== >>>> THE INNER CLASS TO CATCH WITH ASPECT >>>> ==================================================== >>>> >>>> public final class CiaWebThreadFactory implements ThreadFactory { >>>> /** >>>> * The name of the thread group. e.g: CiaWebGroup >>>> * @see java.lang.ThreadGroup >>>> */ >>>> private final ThreadGroup threadGroup; >>>> >>>> /** >>>> >>>> >>>> ..... >>>> >>>> } >>>> >>>> public static final class CiaWebThreadGroup extends ThreadGroup { >>>> public void uncaughtException(Thread t, Throwable e) { >>>> // AspectJ point cut - Please, do not remove - >>>> Log4J here. >>>> } >>>> } >>>> } >>>> >>>> _______________________________________________ >>>> 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 >>> >>> _______________________________________________ >>> 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
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users