Hi Nikolas,
I have designed and implemented Transactional Pointcuts (Transcuts) for AspectJ but it's currently implemented in the AspectBench Compiler. You can find examples as well as details about this model in here:
Sadat-Mohtasham, H. and Hoover, H. J. 2009. Transactional pointcuts: designation reification and advice of interrelated join points. In Proceedings of the Eighth international Conference on Generative Programming and Component Engineering(Denver, Colorado, USA, October 04 - 05, 2009). GPCE '09. ACM, New York, NY, 35-44. DOI= http://doi.acm.org/10.1145/1621607.1621615
In a nutshell, the idea is that, join points do not occur in isolation but are usually part of a bigger operation (e.g. a database transaction, file I/O, etc.). This proposed model allows designation, reification and advice of these interrelated join points. for example, consider this code:
IResource res = new SomeResource(); // Use the resource here res.close();
You can write an exception handling aspect for the above piece of code without refactoring. The reason that this is possible in this new model is that a sequence of interrelated join points can be designated and treated as a join point. This extension is fully compatible with AspectJ and works with other constructs such as cflow and percflow, etc.
You can find an example on database transactions using this model in the paper. Please let me know if you have any questions on the current status of transcuts and specific usage scenarios.
Cheers,
--Hossein
Message: 3 Date: Sat, 6 Feb 2010 23:25:18 +0100 (CET) From: Nikolas Nehmer <nnehmer@xxxxxxxxxxxxxxxxxxxx> Subject: Re: [aspectj-users] detecting try blocks To: aspectj-users@xxxxxxxxxxx Message-ID: <27032609.1265495119276.OPEN-XCHANGE.WebMail.tomcat@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> Content-Type: text/plain; charset=us-ascii
Hi Andy,
thanks for your reply! Most likely my use case is far too specific. In the context of my pdh studies I'm implementing rollback behaviour on the application level. Among others, try scopes build transaction boundaries in my approach. For the logging part, necessary to ensure rollback functionality, the entry events and exit events from and to atomic blocks (transaction boundary) have to be detected during runtime. As most of my current logging component is based on aspectj it would've been nice to smoothly integrate this idea as well. But for me it seems as if I will have to use a bytecode manipulation framework such as ASM.
Cheers, Nikolas
|