AspectJ Cookbook by Russ Miles This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated September 29, 2005. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: {43} 4th line; the following line of code if (message.equals("\r\n")); should be replaced by if (message.indexOf("") != -1); in order to obtain the result as shown in fig 3-11 (59) 4th paragraph; http://www.xs.iastate.edu/~leavens/foal/papers-2004/barzilay-etal.pdf should be http://www.cs.iastate.edu/~leavens/FOAL/papers-2004/barzilay-etal.pdf [116] example12-1; the pointcut: pointcut ifJoinPointThisHasRealisticSalaryPointcut() : if ( thisJoinPoint.getThis() instanceof MyClass && ((MyClass) thisJoinPoint.getThis()).getSalary() < realisticSalary && ((MyClass) thisJoinPoint.getThis()).getSalary() > 0) && !withincode(* MyClass.get*()); should be pointcut ifJoinPointThisHasRealisticSalaryPointcut() : if ( (thisJoinPoint.getThis() instanceof MyClass) && ((MyClass) thisJoinPoint.getThis()).getSalary() < realisticSalary && ((MyClass) thisJoinPoint.getThis()).getSalary() > 0) && !withincode(* MyClass.get*()) && !execution(* MyClass.get*()); (137) 1st paragraph; the text "according to whether the proceed() call is made from within the around() advice block." is printed twice {156} Figure 14-4; Where the aspect objects are shown, instead of being of type "PerThis" they should be of type "PerControlFlow". (170) 1st line; ... mechanisms shown in Recipe 12.1 ... should be ... mechanisms shown in Recipe 16.1 ... (174) last line; the website for aTrack should be https://atrack.dev.java.net/ and not https://atrack.java.net (230) example 19-13; private Strategy Context.strategy = null; is useless, and not used to implement the strategy pattern. It should not be in the example. (234) figure 19-26; the interface CompositeElement extends the interface Element. This is not shown in the figure. The figure 19-28 has the same issue. The figures should really show this relationship as they show all the others. {303} Code at tope of page - Example 23-4; Where each of the within(..) statements are made the end of the TypePatterns should have two periods followed by an asterisk. i.e. Where the pointcuts read: within(com.oreilly.aspectjcookbook.testing.+) they should read: within(com.oreilly.aspectjcookbook.testing..*) This is true for the withinTestingRegion, withinMyApp and withinThirdParty pointcut declarations.