Class AspectJUrlClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.aspectj.weaver.bcel.ExtensibleURLClassLoader
fr.ifremer.isisfish.aspect.AspectJUrlClassLoader
All Implemented Interfaces:
Closeable, AutoCloseable, org.aspectj.weaver.tools.GeneratedClassHandler, org.aspectj.weaver.tools.WeavingClassLoader

public class AspectJUrlClassLoader extends org.aspectj.weaver.bcel.ExtensibleURLClassLoader implements org.aspectj.weaver.tools.WeavingClassLoader
Cette classe est un copié/coller de WeavingURLClassLoader qui permet de définit notre propre instance de adaptor pour, dans le cas d'IsisFish, permettre d'ajouter des aspects à l'execution. Elle définie deux nouvelles méthodes:
  • deploy(Class) : qui permet de deployer un nouvel aspect
  • prepare() : à appeler après l'ajout de tous les aspects dynamiques
Since:
4.2.0.0
  • Field Details

  • Constructor Details

    • AspectJUrlClassLoader

      public AspectJUrlClassLoader(URL[] urls, ClassLoader parent)
  • Method Details

    • addURL

      protected void addURL(URL url)
      Overrides:
      addURL in class org.aspectj.weaver.bcel.ExtensibleURLClassLoader
    • defineClass

      protected Class defineClass(String name, byte[] b, CodeSource cs) throws IOException
      Override to weave class using WeavingAdaptor
      Overrides:
      defineClass in class org.aspectj.weaver.bcel.ExtensibleURLClassLoader
      Throws:
      IOException
    • getBytes

      protected byte[] getBytes(String name) throws IOException
      Override to find classes generated by WeavingAdaptor
      Overrides:
      getBytes in class org.aspectj.weaver.bcel.ExtensibleURLClassLoader
      Throws:
      IOException
    • getAspectURLs

      public URL[] getAspectURLs()
      Implement method from WeavingClassLoader
      Specified by:
      getAspectURLs in interface org.aspectj.weaver.tools.WeavingClassLoader
    • acceptClass

      public void acceptClass(String name, byte[] classBytes, byte[] weavedBytes)
      Specified by:
      acceptClass in interface org.aspectj.weaver.tools.GeneratedClassHandler
    • deploy

      public void deploy(Class<?> aspectClass)
    • prepare

      public void prepare()
      Mark classloader as configured with aspects and tell to prepare for weaving. Must call this method to avoid NPE in aspectj weaver.