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