[svn] r7759: nemerle/trunk/snippets/aop: makefile src/ftests/JoinPoint_positive.n src/ftests/Target_positi...

Luntain svnadmin at nemerle.org
Sun Aug 12 12:42:17 CEST 2007


Log:
Renamed Invocation to JoinPoint and added Name property to it.

Author: Luntain
Date: Sun Aug 12 12:42:13 2007
New Revision: 7759

Added:
   nemerle/trunk/snippets/aop/src/ftests/JoinPoint_positive.n
   nemerle/trunk/snippets/aop/src/pubapi/
   nemerle/trunk/snippets/aop/src/pubapi/JoinPoint.n
      - copied, changed from rev 7747, nemerle/trunk/snippets/aop/src/helper/Invocation.n
Removed:
   nemerle/trunk/snippets/aop/src/helper/Invocation.n
Modified:
   nemerle/trunk/snippets/aop/makefile
   nemerle/trunk/snippets/aop/src/ftests/Target_positive.n
   nemerle/trunk/snippets/aop/src/ftests/args/var_binding_and_invocation_positive.n
   nemerle/trunk/snippets/aop/src/helper/Advice.n
   nemerle/trunk/snippets/aop/src/helper/Joinpoint.n
   nemerle/trunk/snippets/aop/src/helper/Pointcut.n

Modified: nemerle/trunk/snippets/aop/makefile
==============================================================================
--- nemerle/trunk/snippets/aop/makefile	(original)
+++ nemerle/trunk/snippets/aop/makefile	Sun Aug 12 12:42:13 2007
@@ -1,5 +1,4 @@
 
-# I use only nunit vars, I don't know how to utilize others yet
 include ../../config.mak
 
 build: bin bin/DevMacros.dll bin/Nemerle.Aop.dll

Added: nemerle/trunk/snippets/aop/src/ftests/JoinPoint_positive.n
==============================================================================
--- (empty file)
+++ nemerle/trunk/snippets/aop/src/ftests/JoinPoint_positive.n	Sun Aug 12 12:42:13 2007
@@ -0,0 +1,36 @@
+#pragma indent
+using Nemerle.Aop
+
+public class C
+  mutable field: int
+  public this()
+    field = 0
+  
+  public Field: int
+    get
+      field
+    set
+      field = value
+
+  public Increment(): void
+    field += 1
+  
+  public static Main(): void // Main will also be intercepted, 
+    def c = C()             // it tests that usin jp with static meth does't crash
+    _ = c.Field
+    c.Field = 2
+    c.Increment()
+
+[aspect] public class PrintNameAspect
+  after(jp: JoinPoint) returning: execution(C.?(..): ?) || execution(C.this())
+    System.Console.WriteLine(jp.Name)
+
+/* 
+BEGIN-OUTPUT
+.ctor
+get_Field
+set_Field
+Increment
+Main
+END-OUTPUT
+*/

Modified: nemerle/trunk/snippets/aop/src/ftests/Target_positive.n
==============================================================================
--- nemerle/trunk/snippets/aop/src/ftests/Target_positive.n	(original)
+++ nemerle/trunk/snippets/aop/src/ftests/Target_positive.n	Sun Aug 12 12:42:13 2007
@@ -1,4 +1,4 @@
-/* This tests getting reference to target from an Invocation
+/* This tests getting reference to target from an JoinPoint
    parameter of an advice. */
 
 using Nemerle.Aop;
@@ -12,7 +12,7 @@
 
 [aspect] class Aspecto {
 
-    after(inv: Nemerle.Aop.Invocation) returning: execution(C.Method(): void) {
+    after(inv: Nemerle.Aop.JoinPoint) returning: execution(C.Method(): void) {
         (inv.Target:> C).F = 1;
         print("advice\n");
     }

Modified: nemerle/trunk/snippets/aop/src/ftests/args/var_binding_and_invocation_positive.n
==============================================================================
--- nemerle/trunk/snippets/aop/src/ftests/args/var_binding_and_invocation_positive.n	(original)
+++ nemerle/trunk/snippets/aop/src/ftests/args/var_binding_and_invocation_positive.n	Sun Aug 12 12:42:13 2007
@@ -1,6 +1,6 @@
 /*
 This is to test variable bindings combined with using special
-invocation parameter in advice, namely, the Nemerle.Aop.Invocation.
+JoinPointparameter in advice, namely, the Nemerle.Aop.JoinPoint.
 */
 
 // REFERENCE: Nemerle.Aop.dll
@@ -17,7 +17,7 @@
 
 [aspect()] public class Aspecto {
 
-    after( inv: Nemerle.Aop.Invocation, var: int ) returning: execution(C.Method(..): void) && args(var) {
+    after( inv: Nemerle.Aop.JoinPoint, var: int ) returning: execution(C.Method(..): void) && args(var) {
         (inv.Target:> C).F = 1;
         print("advice intercepted $var\n");
     }

Modified: nemerle/trunk/snippets/aop/src/helper/Advice.n
==============================================================================
--- nemerle/trunk/snippets/aop/src/helper/Advice.n	(original)
+++ nemerle/trunk/snippets/aop/src/helper/Advice.n	Sun Aug 12 12:42:13 2007
@@ -51,7 +51,7 @@
             when (match_res.Matched)
 //                    print("$pointcut matches $jp and advice count is $(Advices.Instance.Count)\n");
                     def has_invocation_param()
-                        adviceMethod.ParametersCount > 0 && adviceMethod.NameOfParmType(0) == "Nemerle.Aop.Invocation"
+                        adviceMethod.ParametersCount > 0 && adviceMethod.NameOfParmType(0) == "Nemerle.Aop.JoinPoint"
                     def vbs = if (has_invocation_param())
                         VariableBinding.Invocation(0):: match_res.VarBindings
                     else 

Modified: nemerle/trunk/snippets/aop/src/helper/Joinpoint.n
==============================================================================
--- nemerle/trunk/snippets/aop/src/helper/Joinpoint.n	(original)
+++ nemerle/trunk/snippets/aop/src/helper/Joinpoint.n	Sun Aug 12 12:42:13 2007
@@ -163,7 +163,11 @@
                 | VariableBinding.ReturnValue(num_in_advice) =>
                     parms[num_in_advice] = <[__ret]>
                 | VariableBinding.Invocation(num_in_advice) =>
-                    inv_declaration = <[def $("__inv":dyn) = Nemerle.Aop.Invocation(this) ]>
+                    def target = if (!meth.IsStatic)
+                        <[this]>
+                    else
+                        <[null]>
+                    inv_declaration = <[def $("__inv":dyn) = Nemerle.Aop.JoinPoint($target, $(meth.Header.name: string)) ]>
                     parms[num_in_advice] = <[$("__inv": dyn)]>
                 | _ => () 
         (inv_declaration, parms)

Modified: nemerle/trunk/snippets/aop/src/helper/Pointcut.n
==============================================================================
--- nemerle/trunk/snippets/aop/src/helper/Pointcut.n	(original)
+++ nemerle/trunk/snippets/aop/src/helper/Pointcut.n	Sun Aug 12 12:42:13 2007
@@ -16,6 +16,7 @@
         static public Parse( tokens: list[Token], params_dict: Hashtable[string,AdviceParameter],env: GlobalEnv): Pointcut {
             def parse = Parse.pointcut(_,params_dict,env);
             some(parse)(tokens)
+            
         }
 
 

Copied: nemerle/trunk/snippets/aop/src/pubapi/JoinPoint.n (from rev 7747, nemerle/trunk/snippets/aop/src/helper/Invocation.n)
==============================================================================
--- nemerle/trunk/snippets/aop/src/helper/Invocation.n	(original)
+++ nemerle/trunk/snippets/aop/src/pubapi/JoinPoint.n	Sun Aug 12 12:42:13 2007
@@ -3,5 +3,6 @@
 using Nemerle.Utility
 
 namespace Nemerle.Aop 
-    [Record] public class Invocation
-        [Nemerle.Utility.Accessor] target: object
+    [Record] public class JoinPoint
+        [Accessor] target: object
+        [Accessor] name: string



More information about the svn mailing list