From cf042abb2d0c76e2d382e91b536f3e9be7bc1317 Mon Sep 17 00:00:00 2001 From: ehilsdal Date: Thu, 28 Aug 2003 17:34:47 +0000 Subject: [PATCH] updated section 3 --- docs/teaching/exercises/answers/Answer1d.java | 23 ---------------- docs/teaching/exercises/answers/Answer3a.java | 6 ++--- docs/teaching/exercises/answers/Answer3b.java | 9 ++++--- docs/teaching/exercises/answers/Answer3c.java | 18 +++---------- docs/teaching/exercises/build.xml | 5 ++++ docs/teaching/exercises/index.html | 26 ++++++++++++------- 6 files changed, 33 insertions(+), 54 deletions(-) delete mode 100644 docs/teaching/exercises/answers/Answer1d.java 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 @@ + + + + + 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,

-$ 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
 

But after compiling in the aspect...

-$ 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)
 
@@ -430,6 +427,15 @@ and call Log.log(String)

Tools: target

+

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 +

+ +
+thisJoinPointInfo at targetObject
+
+

c. More specialized logging

-- 2.39.5