diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/teaching/exercises/answers/Answer1d.java | 23 | ||||
-rw-r--r-- | docs/teaching/exercises/answers/Answer3a.java | 6 | ||||
-rw-r--r-- | docs/teaching/exercises/answers/Answer3b.java | 9 | ||||
-rw-r--r-- | docs/teaching/exercises/answers/Answer3c.java | 18 | ||||
-rwxr-xr-x | docs/teaching/exercises/build.xml | 5 | ||||
-rw-r--r-- | docs/teaching/exercises/index.html | 26 |
6 files changed, 33 insertions, 54 deletions
diff --git a/docs/teaching/exercises/answers/Answer1d.java b/docs/teaching/exercises/answers/Answer1d.java deleted file mode 100644 index 1aa74e79b..000000000 --- a/docs/teaching/exercises/answers/Answer1d.java +++ /dev/null @@ -1,23 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Common Public License v1.0 - * which accompanies this distribution and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * PARC initial implementation - * ******************************************************************/ - -package answers; - -aspect Answer1c { - declare error - : set(private * *) - && !(withincode(* set*(..)) - || withincode(new(..)) - || withincode(void figures.Point.move(int, int))) - && within(figures.*) - : "bad field set"; -} diff --git a/docs/teaching/exercises/answers/Answer3a.java b/docs/teaching/exercises/answers/Answer3a.java index fc5e1d3f7..3bbfb1e98 100644 --- a/docs/teaching/exercises/answers/Answer3a.java +++ b/docs/teaching/exercises/answers/Answer3a.java @@ -14,10 +14,8 @@ package answers; import support.Log; -import figures.Point; - aspect Answer3a { - before(): execution(void Point.move(int, int)) { - Log.log("moving"); + before(): execution(public * *(..)) && within(figures.*) { + Log.log(thisJoinPoint.toString()); } } diff --git a/docs/teaching/exercises/answers/Answer3b.java b/docs/teaching/exercises/answers/Answer3b.java index 0328fe164..b88e45780 100644 --- a/docs/teaching/exercises/answers/Answer3b.java +++ b/docs/teaching/exercises/answers/Answer3b.java @@ -19,8 +19,11 @@ import figures.Group; import figures.FigureElement; aspect Answer3b { - before(): - execution(void Group.add(FigureElement)) && args(Point) { - Log.log("adding Point"); + before(Object o): + execution(public * *(..)) + && within(figures.*) && target(o) + && !withincode(public String toString(..)) // don't overflow! + { + Log.log(thisJoinPoint.toString() + " at " + o); } } diff --git a/docs/teaching/exercises/answers/Answer3c.java b/docs/teaching/exercises/answers/Answer3c.java index 576694e68..33483bc21 100644 --- a/docs/teaching/exercises/answers/Answer3c.java +++ b/docs/teaching/exercises/answers/Answer3c.java @@ -14,21 +14,11 @@ package answers; import support.Log; -import figures.Point; -import figures.Group; -import figures.FigureElement; +import figures.*; aspect Answer3c { - private Group Point.enclosingGroup = null; - - before(Point p, Group g): - execution(void add(FigureElement)) && args(p) && target(g) { - p.enclosingGroup = g; - } - - before(Point p): - call(void move(int, int)) && target(p) { - Log.log("moving as a part of " + p.enclosingGroup); + before(): + execution(void Group.add(FigureElement)) && args(Point) { + Log.log("adding Point"); } - } diff --git a/docs/teaching/exercises/build.xml b/docs/teaching/exercises/build.xml index 4ba785dc1..faf523754 100755 --- a/docs/teaching/exercises/build.xml +++ b/docs/teaching/exercises/build.xml @@ -106,5 +106,10 @@ <delete dir="dist" /> </target> + <target name="javaclean"> + <delete dir="dist" /> + </target> + + </project> diff --git a/docs/teaching/exercises/index.html b/docs/teaching/exercises/index.html index f44ac7806..755c15f9d 100644 --- a/docs/teaching/exercises/index.html +++ b/docs/teaching/exercises/index.html @@ -265,29 +265,26 @@ aspect, </p> <blockquote><PRE> -$ ajc -Xlint -argfile base.lst - $ java tests.Test2a -.F.F.F.... -Time: 0.099 -There were 3 failures: +.F..F.... +Time: 0.04 +There were 2 failures: 1) testTooSmall(tests.Test2a)junit.framework.AssertionFailedError: should have thrown IllegalArgumentException -2) testTooBig(tests.Test2a)junit.framework.AssertionFailedError: should have thrown IllegalArgumentException -3) testMove(tests.Test2a)junit.framework.AssertionFailedError: should have thrown IllegalArgumentException +2) testMove(tests.Test2a)junit.framework.AssertionFailedError: should have thrown IllegalArgumentException FAILURES!!! -Tests run: 7, Failures: 3, Errors: 0 +Tests run: 7, Failures: 2, Errors: 0 </PRE></blockquote> <p> But after compiling in the aspect... </p> <blockquote><PRE> -$ ajc -Xlint -argfile base.lst +$ ajc -Xlint -argfile base.lst answers/Answer.java $ java tests.Test2a ....... -Time: 0.097 +Time: 0.04 OK (7 tests) </PRE></blockquote> @@ -430,6 +427,15 @@ and call <code>Log.log(String)</code></p> <p> <strong>Tools:</strong> <code>target</code> </p> +<p> AspectJ can expose the target object at a join point for tracing. +In this exercise, you will print not only the join point information, +but also the target object, with the form +</p> + +<blockquote><pre> +<em>thisJoinPointInfo</em> at <em>targetObject</em> +</pre></blockquote> + <h3>c. More specialized logging</h3> |