Preface; Audience; About This Book; Assumptions This Book Makes; Conventions Used in This Book; Using the Code Examples; We''d Like to Hear from You; Safari Books Online; Acknowledgments;Chapter 1: Aspect Orientation Overview; 1.1 A Brief History of Aspect Orientation; 1.2 AspectJ; 1.3 A Definition of Aspect Orientation; 1.4 Where to Go for More Information;Chapter 2: Getting Started with AspectJ; 2.1 Introduction; 2.2 Installing AspectJ; 2.3 Developing a Simple Aspect; 2.
4 Compiling an Aspect and Multiple Java Files; 2.5 Weaving Aspects into Jars; 2.6 Weaving Aspects at Load Time; 2.7 Generating Javadoc Documentation; 2.8 Compiling an AspectJ Project Using Eclipse; 2.9 Selecting the Aspects That Are Woven in a Build Within Eclipse; 2.10 Building an AspectJ Project Using Ant;Chapter 3: Deploying AspectJ Applications; 3.1 Introduction; 3.
2 Deploying a Command-Line AspectJ Application; 3.3 Deploying an AspectJ Application as a Fully Contained Executable JAR File; 3.4 Deploying a Java Servlet That Uses AspectJ; 3.5 Deploying a JSP That Uses AspectJ; 3.6 Deploying an Axis Web Service That Uses AspectJ;Chapter 4: Capturing Joing Points on Methods; 4.1 Introduction; 4.2 Capturing a Method Call; 4.3 Capturing the Parameter Values Passed on a Method Call; 4.
4 Capturing the Target of a Method Call; 4.5 Capturing a Method When It Is Executing; 4.6 Capturing the Value of the this Reference When a Method Is Executing;Chapter 5: Capturing Join Points on Exception Handling; 5.1 Introduction; 5.2 Capturing When an Exception Is Caught; 5.3 Capturing the Thrown Exception; 5.4 Capturing the Object Handling the Exception;Chapter 6: Capturing Join Points on Advice; 6.1 Introduction; 6.
2 Capturing When Advice Is Executing; 6.3 Excluding Join Points That Are a Result of Advice Execution; 6.4 Exposing the Original Join Point When Advice Is Being Advised;Chapter 7: Capturing Join Points on Class Object Construction; 7.1 Introduction; 7.2 Capturing a Call to a Constructor; 7.3 Capturing a Constructor When It Is Executing; 7.4 Capturing When an Object Is Initialized; 7.5 Capturing When an Object Is About to Be Initialized; 7.
6 Capturing When a Class Is Initialized;Chapter 8: Capturing Join Points on Attributes; 8.1 Introduction; 8.2 Capturing When an Object''s Attribute Is Accessed; 8.3 Capturing the Value of the Field Being Accessed; 8.4 Capturing When an Object''s Field Is Modified; 8.5 Capturing the Value of a Field When It Is Modified;Chapter 9: Capturing Join Points Within Programmatic Scope; 9.1 Introduction; 9.2 Capturing All Join Points Within a Particular Class; 9.
3 Capturing All Join Points Within a Particular Package; 9.4 Capturing All Join Points Within a Particular Method;Chapter 10: Capturing Join Points Based on Control Flow; 10.1 Introduction; 10.2 Capturing All Join Points Within a Program''s Control Flow Initiated by an Initial Join Point; 10.3 Capturing All Join Points Within a Program''s Control Flow, Excluding the Initial Join Point;Chapter 11: Capturing Join Points Based on Object Type; 11.1 Introduction; 11.2 Capturing When the this Reference Is a Specific Type; 11.3 Capturing When a Join Point''s Target Object Is a Specific Type; 11.
4 Capturing When the Arguments to a Join Point Are a Certain Number, Type, and Ordering;Chapter 12: Capturing Join Points Based on a Boolean or Combined Expression; 12.1 Introduction; 12.2 Capturing When a Runtime Condition Evaluates to True on a Join Point; 12.3 Combining Pointcuts Using a Logical AND (&&); 12.4 Combining Pointcuts Using a Logical OR ( ); 12.5 Capturing All Join Points NOT Specified by a Pointcut Declaration; 12.6 Declaring Anonymous Pointcuts; 12.7 Reusing Pointcuts;Chapter 13: Defining Advice; 13.
1 Introduction; 13.2 Accessing Class Members; 13.3 Accessing the Join Point Context; 13.4 Executing Advice Before a Join Point; 13.5 Executing Advice Around a Join Point; 13.6 Executing Advice Unconditionally After a Join Point; 13.7 Executing Advice Only After a Normal Return from a Join Point; 13.8 Executing Advice Only After an Exception Has Been Raised in a Join Point; 13.
9 Controlling Advice Precedence; 13.10 Advising Aspects;Chapter 14: Defining Aspect Instantiation; 14.1 Introduction; 14.2 Defining Singleton Aspects; 14.3 Defining an Aspect per Instance; 14.4 Defining an Aspect per Control Flow;Chapter 15: Defining Aspect Relationships; 15.1 Introduction; 15.2 Inheriting Pointcut Definitions; 15.
3 Implementing Abstract Pointcuts; 15.4 Inheriting Classes into Aspects; 15.5 Declaring Aspects Inside Classes;Chapter 16: Enhancing Classes and the Compiler; 16.1 Introduction; 16.2 Extending an Existing Class; 16.3 Declaring Inheritance Between Classes; 16.4 Implementing Interfaces Using Aspects; 16.5 Declaring a Default Interface Implementation; 16.
6 Softening Exceptions; 16.7 Extending Compilation;Chapter 17: Implementing Creational Object-Oriented Design Patterns; 17.1 Introduction; 17.2 Implementing the Singleton Pattern; 17.3 Implementing the Prototype Pattern; 17.4 Implementing the Abstract Factory Pattern; 17.5 Implementing the Factory Method Pattern; 17.6 Implementing the Builder Pattern;Chapter 18: Implementing Structural Object-Oriented Design Patterns; 18.
1 Introduction; 18.2 Implementing the Composite Pattern; 18.3 Implementing the Flyweight Pattern; 18.4 Implementing the Adapter Pattern; 18.5 Implementing the Bridge Pattern; 18.6 Implementing the Decorator Pattern; 18.7 Implementing the Proxy Pattern;Chapter 19: Implementing Behavioral Object-Oriented Design Patterns; 19.1 Introduction; 19.
2 Implementing the Observer Pattern; 19.3 Implementing the Command Pattern; 19.4 Implementing the Iterator Pattern; 19.5 Implementing the Mediator Pattern; 19.6 Implementing the Chain of Responsibility Pattern; 19.7 Implementing the Memento Pattern; 19.8 Implementing the Strategy Pattern; 19.9 Implementing the Visitor Pattern; 19.
10 Implementing the Template Method Pattern; 19.11 Implementing the State Pattern; 19.12 Implementing the Interpreter Pattern;Chapter 20: Applying Class and Component Scale Aspects; 20.1 Introduction; 20.2 Validating Parameters Passed to a Method; 20.3 Overriding the Class Instantiated on a Call to a Constructor; 20.4 Adding Persistence to a Class; 20.5 Applying Mock Components to Support Unit Testing;Chapter 21: Applying Application Scale Aspects; 21.
1 Introduction; 21.2 Applying Aspect-Oriented Tracing; 21.3 Applying Aspect-Oriented Logging; 21.4 Applying Lazy Loading; 21.5 Managing Application Properties;Chapter 22: Applying Enterprise Scale Aspects; 22.1 Introduction; 22.2 Applying Development Guidelines and Rules; 22.3 Applying Transactions; 22.
4 Applying Resource Pooling; 22.5 Remoting a Class Transparently Using RMI; 22.6 Applying a Security Policy;Chapter 23: Applying Aspect-Oriented Design Patterns; 23.1 Introduction; 23.2 Applying the Cuckoo''s Egg Design Pattern; 23.3 Applying the Director Design Pattern; 23.4 Applying the Border Control Design Pattern; 23.5 Applying the Policy Design Pattern;The AspectJ Runtime API; org.
aspectj.lang; Signature; org.aspectj.lang.reflect; The SoftException Class; The NoAspectBoundException Class;Colophon;.