summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/teaching/exercises/answers/Answer1d.java23
-rw-r--r--docs/teaching/exercises/answers/Answer3a.java6
-rw-r--r--docs/teaching/exercises/answers/Answer3b.java9
-rw-r--r--docs/teaching/exercises/answers/Answer3c.java18
-rwxr-xr-xdocs/teaching/exercises/build.xml5
-rw-r--r--docs/teaching/exercises/index.html26
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>