Foreword |
|
xv | |
About the Authors |
|
xvii | |
About the Technical Reviewer |
|
xix | |
Introduction |
|
xxi | |
|
|
1 | (6) |
|
Looking at Programming Paradigms |
|
|
1 | (1) |
|
|
2 | (1) |
|
OOP: A Promising Paradigm |
|
|
2 | (2) |
|
|
4 | (1) |
|
The Case of Crosscutting Functionalities |
|
|
4 | (1) |
|
The Case of Code Scattering |
|
|
5 | (1) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
7 | (16) |
|
|
7 | (7) |
|
|
8 | (1) |
|
A New Dimension in Modularity |
|
|
8 | (4) |
|
|
12 | (2) |
|
|
14 | (2) |
|
Different Types of Joinpoints |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
17 | (2) |
|
Different Types of Advice Code |
|
|
17 | (2) |
|
The Introduction Mechanism |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (3) |
|
|
23 | (38) |
|
A First Application with AspectJ |
|
|
24 | (6) |
|
The Order-Management Application |
|
|
24 | (2) |
|
|
26 | (1) |
|
|
26 | (1) |
|
A First Pointcut Descriptor |
|
|
27 | (1) |
|
A First Piece of Advice Code |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
30 | (1) |
|
|
30 | (13) |
|
|
30 | (3) |
|
|
33 | (3) |
|
|
36 | (5) |
|
Pointcut Parameterization |
|
|
41 | (1) |
|
Summary of Pointcut Descriptors |
|
|
41 | (2) |
|
|
43 | (4) |
|
The Code of an Advice Code Block |
|
|
43 | (1) |
|
The Different Types of Advice Code |
|
|
43 | (3) |
|
Advice Code and Exceptions |
|
|
46 | (1) |
|
The Introduction Mechanism |
|
|
47 | (2) |
|
Fields, Methods, and Constructors |
|
|
47 | (1) |
|
Inherited Classes and Implemented Interfaces |
|
|
48 | (1) |
|
|
48 | (1) |
|
|
49 | (4) |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
|
Declaring Warnings and Errors |
|
|
52 | (1) |
|
|
53 | (1) |
|
New Features in AspectJ 5 |
|
|
53 | (5) |
|
Working with Annotations in Aspects |
|
|
53 | (1) |
|
Defining Aspects with Annotations |
|
|
54 | (4) |
|
Aspect Instantiation in AspectJ 5 |
|
|
58 | (1) |
|
|
58 | (1) |
|
|
58 | (3) |
|
|
61 | (30) |
|
Creating a First JAC Application |
|
|
61 | (7) |
|
|
61 | (5) |
|
Compiling a JAC Application |
|
|
66 | (1) |
|
Running a JAC Application |
|
|
67 | (1) |
|
|
68 | (4) |
|
|
68 | (3) |
|
Associating a Wrapper with a Pointcut |
|
|
71 | (1) |
|
|
72 | (3) |
|
|
72 | (1) |
|
|
73 | (1) |
|
|
73 | (1) |
|
|
74 | (1) |
|
Configuring Aspects and JAC Applications |
|
|
75 | (3) |
|
|
75 | (3) |
|
Configuring JAC Applications |
|
|
78 | (1) |
|
Using the Introduction Feature |
|
|
78 | (3) |
|
|
79 | (1) |
|
|
80 | (1) |
|
Using the JAC Aspects Library |
|
|
81 | (4) |
|
Using the User-Interface Aspects |
|
|
81 | (2) |
|
Using the Persistence and Transaction Aspects |
|
|
83 | (1) |
|
Using the Distribution Aspects |
|
|
83 | (1) |
|
|
84 | (1) |
|
|
85 | (1) |
|
|
86 | (2) |
|
|
86 | (1) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
88 | (3) |
|
|
91 | (22) |
|
Using JBoss AOP: An Introduction |
|
|
91 | (4) |
|
|
91 | (1) |
|
|
92 | (1) |
|
|
92 | (1) |
|
|
93 | (2) |
|
|
95 | (1) |
|
|
95 | (5) |
|
The Different Types of Pointcuts |
|
|
96 | (2) |
|
Associating an Interceptor with a Pointcut |
|
|
98 | (2) |
|
|
100 | (3) |
|
Implementing an Interceptor |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
102 | (1) |
|
Using the Mix-In Mechanism |
|
|
103 | (2) |
|
|
103 | (1) |
|
|
104 | (1) |
|
|
105 | (3) |
|
Annotations in Pointcut Definitions |
|
|
105 | (1) |
|
Annotations for Writing Aspects |
|
|
105 | (3) |
|
|
108 | (3) |
|
|
108 | (1) |
|
|
109 | (1) |
|
|
109 | (1) |
|
|
110 | (1) |
|
|
111 | (2) |
|
|
113 | (24) |
|
An Overview of the Spring Framework |
|
|
113 | (7) |
|
|
114 | (1) |
|
Creating and Configuring Beans |
|
|
114 | (3) |
|
Other Bean Configuration Features |
|
|
117 | (2) |
|
|
119 | (1) |
|
Spring AOP: An Introduction |
|
|
120 | (2) |
|
|
120 | (1) |
|
|
120 | (1) |
|
|
121 | (1) |
|
|
121 | (1) |
|
|
122 | (4) |
|
|
122 | (1) |
|
Programmatically Defined Pointcuts |
|
|
123 | (1) |
|
|
124 | (1) |
|
Associating an Interceptor with a Pointcut |
|
|
125 | (1) |
|
|
126 | (6) |
|
Interceptors (``Around'' Advice) |
|
|
126 | (1) |
|
|
126 | (3) |
|
``Introduction'' Advice and Mix-Ins |
|
|
129 | (3) |
|
|
132 | (3) |
|
|
132 | (1) |
|
Programmatically Configured Aspects |
|
|
132 | (1) |
|
|
133 | (2) |
|
|
135 | (2) |
|
|
137 | (12) |
|
|
138 | (1) |
|
|
139 | (1) |
|
|
139 | (3) |
|
|
140 | (1) |
|
|
140 | (2) |
|
|
142 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
143 | (1) |
|
|
144 | (2) |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
145 | (1) |
|
|
146 | (3) |
|
|
149 | (22) |
|
Design Patterns, or Elements of Reusable Software |
|
|
149 | (1) |
|
Implementation of Design Patterns with AOP |
|
|
150 | (1) |
|
The Singleton Design Pattern |
|
|
150 | (7) |
|
|
150 | (1) |
|
A First Implementation of the Singleton Aspect with JBoss AOP |
|
|
151 | (3) |
|
A Second Implementation of the Singleton Aspect with AspectJ |
|
|
154 | (1) |
|
Evaluation of the Implementation |
|
|
155 | (2) |
|
The Observer Design Pattern |
|
|
157 | (4) |
|
|
158 | (1) |
|
Aspect-oriented Implementation |
|
|
158 | (3) |
|
Evaluation of the Implementation |
|
|
161 | (1) |
|
The Command Design Pattern |
|
|
161 | (4) |
|
|
161 | (1) |
|
Aspect-oriented Implementation |
|
|
161 | (3) |
|
Evaluation of the Implementation |
|
|
164 | (1) |
|
The Chain of Responsibility Design Pattern |
|
|
165 | (3) |
|
|
165 | (1) |
|
Aspect-oriented Implementation |
|
|
165 | (2) |
|
Evaluation of the Implementation |
|
|
167 | (1) |
|
|
168 | (2) |
|
|
168 | (1) |
|
Aspect-oriented Implementation |
|
|
168 | (2) |
|
|
170 | (1) |
|
Quality of Service and AOP |
|
|
171 | (34) |
|
|
171 | (9) |
|
Foundations of Design by Contract |
|
|
172 | (2) |
|
|
174 | (1) |
|
Implementing Contracts with AOP |
|
|
174 | (6) |
|
|
180 | (11) |
|
|
181 | (4) |
|
|
185 | (6) |
|
AOP for Application Administration and Supervision |
|
|
191 | (13) |
|
|
191 | (3) |
|
|
194 | (10) |
|
|
204 | (1) |
|
Presentation of the Sample Application |
|
|
205 | (22) |
|
Sample Application Architecture |
|
|
205 | (14) |
|
The Application at a Glance |
|
|
205 | (3) |
|
|
208 | (1) |
|
|
209 | (7) |
|
|
216 | (3) |
|
Sample Application Design |
|
|
219 | (7) |
|
Using J2EE Design Solutions |
|
|
219 | (6) |
|
|
225 | (1) |
|
|
226 | (1) |
|
Using AOP within the Sample Application's Business Tier |
|
|
227 | (44) |
|
Improving Business Tier Design Patterns |
|
|
228 | (19) |
|
|
228 | (5) |
|
|
233 | (14) |
|
Business Tier Improvement: Beyond Design Patterns |
|
|
247 | (11) |
|
Resolving Object References |
|
|
247 | (3) |
|
|
250 | (4) |
|
Precondition Factorization |
|
|
254 | (1) |
|
|
255 | (3) |
|
Business Tier Aspects Synthesis |
|
|
258 | (3) |
|
AOP As an Integration Technique |
|
|
261 | (8) |
|
Managing Distributed Transactions with JTA |
|
|
262 | (1) |
|
|
262 | (2) |
|
EJBs As an Infrastructure for the Automatic Integration of Transactions |
|
|
264 | (2) |
|
AOP and the Modular Integration of Transactions |
|
|
266 | (3) |
|
|
269 | (2) |
|
Using AOP in the Sample Application's Presentation and Client Tiers |
|
|
271 | (40) |
|
Using AOP for Distributed Communications |
|
|
271 | (22) |
|
Design Patterns for Business Layer Access |
|
|
272 | (8) |
|
Aspect-oriented Implementation of the Access Design Patterns |
|
|
280 | (11) |
|
Client Tier Communication Aspects Synthesis |
|
|
291 | (2) |
|
Using AOP for the Presentation of the Client Tier |
|
|
293 | (5) |
|
Using AOP for Ul Concerns |
|
|
293 | (5) |
|
Using AOP in the Design Patterns of the Web Presentation Tier |
|
|
298 | (11) |
|
|
298 | (4) |
|
|
302 | (2) |
|
|
304 | (2) |
|
|
306 | (3) |
|
|
309 | (1) |
|
Web Presentation Tier Summary |
|
|
309 | (1) |
|
|
309 | (2) |
Index |
|
311 | |