Class AspectJWeavingAdaptor

java.lang.Object
org.aspectj.weaver.tools.WeavingAdaptor
fr.ifremer.isisfish.aspect.AspectJWeavingAdaptor
All Implemented Interfaces:
org.aspectj.bridge.IMessageContext

public class AspectJWeavingAdaptor extends org.aspectj.weaver.tools.WeavingAdaptor
Cette classe étend WeavingAdaptor pour avoir une instance personnalisée du champ WeavingAdaptor.weaver. Toutes la logique consiste ensuite à pouvoir appeler le code weaver.weave(wcp); pour pouvoir déployer un aspect à l'execution dans le weaver qui servira ensuite à "aspectiser une classe" via la méthode WeavingAdaptor.weaveClass(String, byte[]). Elle utilise pour l'instant de l'introspection agressive pour acceder aux attributs privés de la classe parentes et les rendre visible. TODO : au lieu d'ajouter à la demande des aspects, on pourrait les ajouters en parmanence, mais en les activant de facon conditionnelle (if() cutpoint). A tester. Il est possible que sans le cas d'isis, une classe non aspectisée soit plus performante qu'une classe dont les aspects ne sont pas activés. Voir la discussion : http://aspectj.2085585.n4.nabble.com/Runtime-weaving-without-agent-tp4650837p4650849.html
Since:
4.2.0.0
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.aspectj.weaver.tools.WeavingAdaptor

    org.aspectj.weaver.tools.WeavingAdaptor.WeavingAdaptorMessageHolder, org.aspectj.weaver.tools.WeavingAdaptor.WeavingAdaptorMessageWriter
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected ClassLoader
     
    protected org.aspectj.weaver.CrosscuttingMembersSet
     

    Fields inherited from class org.aspectj.weaver.tools.WeavingAdaptor

    activeProtectionDomain, bcelWorld, cache, delegateForCurrentClass, generatedClasses, generatedClassHandler, SHOW_WEAVE_INFO_PROPERTY, TRACE_MESSAGES_PROPERTY, verbose, weaver, WEAVING_ADAPTOR_VERBOSE
  • Constructor Summary

    Constructors
    Constructor
    Description
    AspectJWeavingAdaptor(ClassLoader parentLoader, org.aspectj.weaver.tools.WeavingClassLoader loader)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    deploy(Class<?> aspectClass)
     
    void
    Mark bcel weaver ready for weaving classes.

    Methods inherited from class org.aspectj.weaver.tools.WeavingAdaptor

    accept, addURL, createMessageHandler, debug, disable, dump, enable, ensureDelegateInitialized, error, error, getContextId, getDumpDir, getFullClassPath, getMessageHandler, getMessageHolder, info, initializeCache, isEnabled, setActiveProtectionDomain, setMessageHandler, shouldDump, warn, warn, weaveClass, weaveClass

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • parentLoader

      protected ClassLoader parentLoader
    • xcutSet

      protected org.aspectj.weaver.CrosscuttingMembersSet xcutSet
  • Constructor Details

    • AspectJWeavingAdaptor

      public AspectJWeavingAdaptor(ClassLoader parentLoader, org.aspectj.weaver.tools.WeavingClassLoader loader)
  • Method Details

    • deploy

      public byte[] deploy(Class<?> aspectClass)
    • prepare

      public void prepare()
      Mark bcel weaver ready for weaving classes.