+++ /dev/null
-import java.util.Random;
-
-public class CalculatePI {
-
- static Random r = new Random();
- static double piApproximation = 1.0f;
- static int repetitions = 500000;
- static int iteration = 0;
- static double inSquare = 0;
- static double inCircle = 0;
-
- public static void main(String[] args) {
- for (iteration = 0;iteration<repetitions;iteration++) approximate();
- piApproximation = (inCircle/inSquare)*4.0f;
- System.out.println("After "+repetitions+" iterations, pi is estimated to be "+piApproximation);
- }
-
- public static void approximate() {
- double x = r.nextDouble();
- double y = r.nextDouble();
- inSquare++;
- if (x*x + y*y < 1) {inCircle++;}
- }
-
-
-}
\ No newline at end of file
+++ /dev/null
-\r
-\r
-public aspect Logger {\r
- \r
- after(): call(* approximate(..)) {\r
- if (CalculatePI.iteration%10000==0) \r
- System.out.println("Approximation is now:"+\r
- (CalculatePI.inCircle/CalculatePI.inSquare)*4.0f);\r
- }\r
- \r
-}
\ No newline at end of file
+++ /dev/null
-CalculatePI.java\r
-Logger.aj\r
--verbose\r
--noExit\r
--XnotReweavable
\ No newline at end of file
+++ /dev/null
-CalculatePI.java\r
-Logger.aj\r
--verbose\r
--noExit
\ No newline at end of file
+++ /dev/null
-SecondAspect.aj\r
--verbose\r
--noExit
\ No newline at end of file
+++ /dev/null
-CalculatePI.java\r
-Logger.aj\r
--Xreweavable:compress\r
--verbose\r
--noExit
\ No newline at end of file
+++ /dev/null
-Logger.aj\r
--verbose
\ No newline at end of file
+++ /dev/null
-\r
-public aspect SecondAspect {\r
-\r
- declare parents: Logger implements java.io.Serializable;\r
-}
\ No newline at end of file
+++ /dev/null
-tjp/Demo.java\r
-tjp/GetInfo.java\r
--verbose\r
--noExit
\ No newline at end of file
+++ /dev/null
--verbose\r
--noExit
\ No newline at end of file
+++ /dev/null
-\r
-public aspect ThirdAspect {\r
-\r
- int CalculatePI.x;\r
-}
\ No newline at end of file
+++ /dev/null
-
-/*
-
-Copyright (c) Xerox Corporation 1998-2002. All rights reserved.
-
-Use and copying of this software and preparation of derivative works based
-upon this software are permitted. Any distribution of this software or
-derivative works must comply with all applicable United States export control
-laws.
-
-This software is made available AS IS, and Xerox Corporation makes no warranty
-about the software, its performance or its conformity to any specification.
-
-*/
-package tjp;
-
-public class Demo {
- static Demo d;
-
- public static void main(String[] args){
- new Demo().go();
- }
-
- void go(){
- d = new Demo();
- d.foo(1,d);
- System.out.println(d.bar(new Integer(3)));
- }
-
- void foo(int i, Object o){
- System.out.println("Demo.foo(" + i + ", " + o + ")\n");
- }
-
- String bar (Integer j){
- System.out.println("Demo.bar(" + j + ")\n");
- return "Demo.bar(" + j + ")";
- }
-}
+++ /dev/null
-
-/*
-Copyright (c) Xerox Corporation 1998-2002. All rights reserved.
-
-Use and copying of this software and preparation of derivative works based
-upon this software are permitted. Any distribution of this software or
-derivative works must comply with all applicable United States export control
-laws.
-
-This software is made available AS IS, and Xerox Corporation makes no warranty
-about the software, its performance or its conformity to any specification.
-*/
-
-package tjp;
-
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.reflect.CodeSignature;
-
-aspect GetInfo {
-
- static final void println(String s){ System.out.println(s); }
-
- pointcut goCut(): cflow(this(Demo) && execution(void go()));
-
- pointcut demoExecs(): within(Demo) && execution(* *(..));
-
- Object around(): demoExecs() && !execution(* go()) && goCut() {
- println("Intercepted message: " +
- thisJoinPointStaticPart.getSignature().getName());
- println("in class: " +
- thisJoinPointStaticPart.getSignature().getDeclaringType().getName());
- printParameters(thisJoinPoint);
- println("Running original method: \n" );
- Object result = proceed();
- println(" result: " + result );
- return result;
- }
-
- static private void printParameters(JoinPoint jp) {
- println("Arguments: " );
- Object[] args = jp.getArgs();
- String[] names = ((CodeSignature)jp.getSignature()).getParameterNames();
- Class[] types = ((CodeSignature)jp.getSignature()).getParameterTypes();
- for (int i = 0; i < args.length; i++) {
- println(" " + i + ". " + names[i] +
- " : " + types[i].getName() +
- " = " + args[i]);
- }
- }
-}