wow... This will take AOP to the next level (interceptors on fields and and
constructors? WOW.).  I'll checkout your stuff tonight.

Regards,
Hiram

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Bill
Burke
Sent: Tuesday, November 26, 2002 3:39 PM
To: Jboss-Dev
Cc: Bob Lee; Jboss-Group@Jboss. Org
Subject: [JBoss-dev] new direction for JBoss AOP


Code is under jboss-head/aop

It compiles but that's about it.  Its incomplete.

The new direction is shown in the below xml if you can follow along.  Don't
have much time for explanation before Thanksgiving, but the idea is POJOs
and DynamicProxies married into one framework.  Field access, Constructors
and methods interceptable on POJOs.  More funtionality can be inferred if
you read the following XML.

<!-- Interceptor definition.  This is just a template
     "name" is the string reference to the interceptor
     "classname" is its classname
     "scope" defines how the interceptor is instantiated
             instance - one interceptor instance per object instance
             class - one instance per class
             global - one instance for entire VM

     config - defines any arbitrary xml to pass to component for
initialization
-->
<interceptor name="service1" classname="" scope="instance,class,global">
  <config/>
</interceptor-service>


<!-- Extensions are classes that can be attached to an object to provide
     extended APIs.

     "name" is the string reference to the extention
     "classname" is its classname
     "scope" defines how the extension is instantiated
             instance - one extension instance per object instance
             class - one instance per class
             global - one instance for entire VM

     interfaces - are a list of interfaces to extend the aspected object.
                  Any methods invoked on the aspect that pertain to these
                  interfaces will be delegated directly to the extension class
     config - defines any arbitrary xml to pass to component for
initialization


     i.e.
     Class MyClass {}

     interface api { void doSometing(); }

     Class MyExtension implements api { public void doSomething(){ ... } }


     You could do in code
     {
        MyClass instance = new MyClass();
        api a = (api)instance;
        a.doSomething();
     }
     Even though MyClass doesn't implement the api interface, or has the
code for it
     you can cast and invoke on it anyways.  This is the extension.
-->
<extension name"extension1" classname="" scope="instance,class,global">
  <interfaces/>
  <config/>
</extension>

<!-- chain of interceptor definition -->
<stack name="stack1">
  <interceptor-ref name="service1"/>
  <interceptor name="int1" classname="">
    <config/>
  </interceptor>
</stack>

<!-- interceptor pointcut defines what classes, methods,fields must be
intercepted
     and by what -->
<interceptor-pointcut name="" class=".*pattern*">
  <method-pointcut expr="*set*/>
  <!-- Don't intercept method defined in these interfaces -->
  <method-pointcut>
    <excluded-interfaces/>
  </method-pointcut>

  <!-- Intercept methods defined in all these interfaces -->
  <method-pointcut>
    <included-interfaces/>
  </method-pointcut>

  <field-pointcut expr="*variable*"/>
  <field-pointcut expr="{PUBLIC,PRIVATE,PROTECTED}"/>

  <interceptors>
    <stack-ref name="stack1"/>
    <interceptor-ref name="">
       <config/>
    </interceptor-ref>
  <interceptors/>
</interceptor-pointcut>

<!-- Extension pointcut defines what classes should be extended -->
<extension-pointcut name="" class=".*">
  <extensions>
    <extension-ref name="extension1"/>
    <extension/>
  </extensions>
</extension-pointcut>

<!--
   A proxy is a template for creating Dynamic Proxies.

-->
<proxy name="">
  <interfaces/>
  <interceptor-pointcuts/>
  <extensions/>
</proxy>

<!--
    Add a pointcut to created proxy
-->
<interceptor-pointcut name="" proxy="">
  <method-pointcut>
    <included-interfaces/>
  </method-pointcut>
  <interceptors>
    <stack-ref name="stack1"/>
    <interceptor-ref name="">
       <config/>
    </interceptor-ref>
  <interceptors/>
</interceptor-pointcut>







-------------------------------------------------------
This SF.net email is sponsored by: Get the new Palm Tungsten T
handheld. Power & Color in a compact size!
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development




-------------------------------------------------------
This SF.net email is sponsored by: Get the new Palm Tungsten T 
handheld. Power & Color in a compact size! 
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to