[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