ACM Home Page
Please provide us with feedback. Feedback
StrongAspectJ: flexible and safe pointcut/advice bindings
Full text PdfPdf (511 KB)
Source Aspect-oriented software development archive
Proceedings of the 7th international conference on Aspect-oriented software development table of contents
Brussels, Belgium
SESSION: Programming language design and implementation I table of contents
Pages 60-71  
Year of Publication: 2008
ISBN:978-1-60558-044-9
Authors
Bruno De Fraine  Vrije Universiteit Brussel, Belgium
Mario Südholt  École des Mines de Nantes-INRIA, LINA, France
Viviane Jonckers  Vrije Universiteit Brussel, Belgium
Sponsor
AOSA : Aspect-Oriented Software Association
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): n/a,   Downloads (12 Months): n/a,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1353482.1353491
What is a DOI?

ABSTRACT

AspectJ was designed as a seamless aspect-oriented extension of the Java programming language. However, unlike Java, AspectJ does not have a safe type system: an accepted binding between a pointcut and an advice can give rise to type errors at runtime. In addition, AspectJ's typing rules severely restrict the definition of certain generic advice behavior.

In this paper, we analyze the roots of these type errors, and describe measures to recover type safety for both generic and non-generic pointcut/advice declarations. Pointcuts quantify over heterogeneous sets of join points and are hence typed using type ranges in our approach, while type variables and a dual advice signature allow to express the generic and invasive nature of advices. Using these mechanisms, we can express advice that augments, narrows or replaces base functionality in possibly generic contexts. As a language engineering contribution, we integrate our proposal with the AspectJ language, and we provide a prototype implementation as a plugin for the AspectBench Compiler (abc). On a theoretical level, we present a formal definition of the proposed constructs and typing rules, and develop proofs for their type safety properties.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
M. Akşit, editor. Proc. 2nd Int' Conf. on Aspect-Oriented Software Development (AOSD-2003). ACM Press, Mar. 2003.
2
3
4
5
 
6
 
7
A. Colyer. Implementing caching with AspectJ. Blog entry: http://www.aspectprogrammer.org/blogs/adrian/, June 2004.
 
8
A. Colyer et al. The AspectJ development environment guide. Available at http://www.eclipse.org/aspectj/doc/released/devguide/, 2002.
 
9
A. Colyer et al. The AspectJ 5 development kit developer's notebook. Available at http://www.eclipse.org/aspectj/doc/released/adk15notebook/, Dec. 2005.
 
10
B. De Fraine, M. Südholt, and V. Jonckers. Formal semantics of flexible and safe pointcut/advice bindings. Technical Report SSEL 02/2007/a, Vrije Universiteit Brussel, Oct. 2007. Available at http://ssel.vub.ac.be/files/formal07a.pdf.
11
 
12
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison-Wesley, 1995.
 
13
14
15
16
 
17
 
18
R. Johnson et al. Spring Java/J2EE Application Framework. Home page at http://www.springframework.org/, 2004.
 
19
 
20
 
21
 
22
D. Lohmann, G. Blaschke, and O. Spinczyk. Generic advice: On the combination of AOP with generative programming in AspectC++. In Proc. of GPCE'04, volume 3286 of Springer-Verlag Lecture Notes in Computer Science, pages 55--74. Springer, Oct. 2004.
23
 
24
 
25
Object Management Group. Unified Modeling Language 2.0 Superstructure Specification, Feb. 2005.
26
 
27
R. Pawlak, R. Johnson, A. Popovici, et al. AOP Alliance (Java/J2EE AOP standard) version 1.0. Home page at http://aopalliance.sourceforge.net/, Mar. 2004.
28
29
30
31

Collaborative Colleagues:
Bruno De Fraine: colleagues
Mario Südholt: colleagues
Viviane Jonckers: colleagues