Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv21752/src/Spring/Spring.Core/Expressions
Modified Files:
Expression.cs ReferenceNode.cs
Log Message:
fixed SPRNET-862
Index: Expression.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/Expression.cs,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** Expression.cs 31 Jul 2007 00:08:42 -0000 1.18
--- Expression.cs 20 Mar 2008 10:35:54 -0000 1.19
***************
*** 47,50 ****
--- 47,67 ----
public class Expression : BaseNode
{
+ /// <summary>
+ /// Contains a list of reserved variable names.
+ /// You must not use any variable names with the reserved prefix!
+ /// </summary>
+ public class ReservedVariableNames
+ {
+ /// <summary>
+ /// Variable Names using this prefix are reserved for internal framework use
+ /// </summary>
+ public static readonly string RESERVEDPREFIX = "____spring_";
+
+ /// <summary>
+ /// variable name of the currently processed object factory, if any
+ /// </summary>
+ internal static readonly string CurrentObjectFactory = RESERVEDPREFIX + "CurrentObjectFactory";
+ }
+
private class SpringASTFactory : ASTFactory
{
Index: ReferenceNode.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ReferenceNode.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** ReferenceNode.cs 7 Sep 2007 03:01:26 -0000 1.12
--- ReferenceNode.cs 20 Mar 2008 10:35:54 -0000 1.13
***************
*** 22,25 ****
--- 22,26 ----
using System.Runtime.Serialization;
using Spring.Expressions;
+ using Spring.Objects.Factory;
namespace Spring.Context.Support
***************
*** 72,75 ****
--- 73,87 ----
{
objectName = this.getFirstChild().getText();
+ IObjectFactory currentObjectFactory = (evalContext.Variables != null)
+ ? (IObjectFactory)evalContext.Variables[Expression.ReservedVariableNames.CurrentObjectFactory]
+ : null;
+
+ // this is a local reference within an object factory
+ if (currentObjectFactory != null)
+ {
+ return currentObjectFactory.GetObject(objectName);
+ }
+
+ // else lookup in default context
ctx = ContextRegistry.GetContext();
if (ctx == null)
|