> 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 <[email protected]>:
> 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 <[email protected]>
> A : [email protected],
> Date : 2013-04-01 11:05
> Objet : Re: [aspectj-users] @DeclareMixin with inner class - Syntax ?
> Envoyé par : [email protected]
>
>
>
> 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 <[email protected]> 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
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
> _______________________________________________
> 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
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users