Glad to see you got it working.

There is an alternative way too. It involves defining a correct
weaving context that names the aspects and your options:

static class SimpleWeavingContext extends DefaultWeavingContext {

                public SimpleWeavingContext(ClassLoader loader) {
                        super(loader);
                }

                @Override
                public List getDefinitions(ClassLoader loader, WeavingAdaptor 
adaptor) {
                        List definitions = new ArrayList();
                        Definition d = new Definition();
                        d.getAspectClassNames().add("MonitorAspect");
                        d.appendWeaverOptions("-Xjoinpoints:synchronization 
-debug");
                        definitions.add(d);
                        return definitions;
                }

        }


and then using the ClassLoaderWeavingAdaptor:

                byte[] bytes = readEntireInputStream(new 
FileInputStream("bin/Test.class"));
                URL[] aspects = getWeaversURL();
                URL[] classpath = getClasspathURL();
                URL[] realClasspath = new URL[aspects.length + 
classpath.length];
                System.arraycopy(aspects, 0, realClasspath, 0, aspects.length);
                System.arraycopy(classpath, 0, realClasspath, aspects.length,
classpath.length);
                URLClassLoader myClassLoader = new URLClassLoader(realClasspath,
ClassLoader.getSystemClassLoader());

                ClassLoaderWeavingAdaptor clwa = new 
ClassLoaderWeavingAdaptor();

                clwa.initialize(myClassLoader, new 
SimpleWeavingContext(myClassLoader));

                byte[] newBytes = clwa.weaveClass("test.Test", bytes, true);

However, it will only work with AspectJ 1.6.7 dev builds after today
because I needed to open up initialize() so it was public rather than
protected. And I've only just committed that change.

Andy


2009/11/21 Andrica Silviu <silviu.andr...@epfl.ch>:
> Hi,
> Indeed I forgot :) And I did create a wrapper class around the
> WeavingAdaptor that sets the right permissions. The code is the following:
> Please find attached the code.
> It works brilliant as long as I don't instrument already loaded classes,
> through java.lang.Instrumentation.instrumentation.retransformClasses(...);
> or java.* classes, I don't exactly know. In this case, Java complains about
> not finding the aspect. I am currently exploring the use of
> -Xbootclassptah/p:<path_to_aspect>.
>
> Thanks for the replies.
> Best regards,
> Silviu
> _______________________________________________
> 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

Reply via email to