Author: mhabersack
Date: 2007-02-27 07:51:36 -0500 (Tue, 27 Feb 2007)
New Revision: 73460

Modified:
   trunk/mcs/class/System.Web/System.Web.Compilation/ChangeLog
   
trunk/mcs/class/System.Web/System.Web.Compilation/ConnectionStringsExpressionBuilder.cs
   trunk/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
Log:
Implement connection string expressions

Modified: trunk/mcs/class/System.Web/System.Web.Compilation/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.Compilation/ChangeLog 2007-02-27 
12:36:32 UTC (rev 73459)
+++ trunk/mcs/class/System.Web/System.Web.Compilation/ChangeLog 2007-02-27 
12:51:36 UTC (rev 73460)
@@ -1,3 +1,13 @@
+2007-02-27  Marek Habersack  <[EMAIL PROTECTED]>
+
+       * TemplateControlCompiler.cs: ParseExpression returns an object,
+       don't assume any concrete type.
+       Use the current culture when converting the expression to a
+       string.
+
+       * ConnectionStringsExpressionBuilder.cs: Implement support for
+       expressions of the <%$ ConnectionStrings:StringName %> form
+
 2007-02-19  Marek Habersack  <[EMAIL PROTECTED]>
 
        * ResourceExpressionBuilder.cs: Do not prepend the .Resources prefix 
here

Modified: 
trunk/mcs/class/System.Web/System.Web.Compilation/ConnectionStringsExpressionBuilder.cs
===================================================================
--- 
trunk/mcs/class/System.Web/System.Web.Compilation/ConnectionStringsExpressionBuilder.cs
     2007-02-27 12:36:32 UTC (rev 73459)
+++ 
trunk/mcs/class/System.Web/System.Web.Compilation/ConnectionStringsExpressionBuilder.cs
     2007-02-27 12:51:36 UTC (rev 73460)
@@ -42,14 +42,24 @@
        [ExpressionPrefix("ConnectionStrings")]
        public class ConnectionStringsExpressionBuilder : ExpressionBuilder {
 
-               public override object EvaluateExpression (object target, 
BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
+               public override object EvaluateExpression (object target, 
BoundPropertyEntry entry,
+                                                          object parsedData, 
ExpressionBuilderContext context)
                {
                        return GetConnectionString (entry.Expression.Trim());
                }
 
-               public override CodeExpression GetCodeExpression 
(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
+               public override CodeExpression GetCodeExpression 
(BoundPropertyEntry entry, object parsedData,
+                                                                 
ExpressionBuilderContext context)
                {
-                       throw new NotImplementedException ();
+                       Console.WriteLine ("{0}.GetCodeExpression: parsedData 
== {1} ({2})",
+                                          this, parsedData, parsedData != null 
? parsedData.GetType ().ToString () : "<null>");
+                       
+                       Pair connString = parsedData as Pair;
+                       return new CodeMethodInvokeExpression (
+                               new CodeTypeReferenceExpression (typeof 
(ConnectionStringsExpressionBuilder)),
+                               "GetConnectionString",
+                               new CodeExpression [] {new 
CodePrimitiveExpression (connString.First)}
+                       );
                }
 
                public static string GetConnectionString (string 
connectionStringName)
@@ -70,10 +80,9 @@
                                return conn.ProviderName;
                }
 
-               [MonoTODO ("Not implemented")]
                public override object ParseExpression (string expression, Type 
propertyType, ExpressionBuilderContext context)
                {
-                       throw new NotImplementedException ();
+                       return new Pair (expression, GetConnectionString 
(expression));
                }
 
                public override bool SupportsEvaluate {

Modified: 
trunk/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
===================================================================
--- 
trunk/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs    
    2007-02-27 12:36:32 UTC (rev 73459)
+++ 
trunk/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs    
    2007-02-27 12:51:36 UTC (rev 73460)
@@ -640,15 +640,13 @@
                                                builderType));
 
                        System.Web.Compilation.ExpressionBuilder eb = null;
-                       ResourceExpressionFields fields;
+                       object parsedData;
                        ExpressionBuilderContext ctx;
                        
                        try {
                                eb = Activator.CreateInstance (t) as 
System.Web.Compilation.ExpressionBuilder;
                                ctx = new ExpressionBuilderContext 
(HttpContext.Current.Request.FilePath);
-                               fields = eb.ParseExpression (expr.Substring 
(colon + 1).Trim (),
-                                                            type,
-                                                            ctx) as 
ResourceExpressionFields;
+                               parsedData = eb.ParseExpression (expr.Substring 
(colon + 1).Trim (), type, ctx);
                        } catch (Exception e) {
                                throw new HttpException (
                                        String.Format ("Failed to create an 
instance of type `{0}'", builderType), e);
@@ -658,7 +656,11 @@
                        convert.Method = new CodeMethodReferenceExpression (
                                new CodeTypeReferenceExpression 
(typeof(Convert)),
                                "ToString");
-                       convert.Parameters.Add (eb.GetCodeExpression (null, 
fields, ctx));
+                       convert.Parameters.Add (eb.GetCodeExpression (null, 
parsedData, ctx));
+                       convert.Parameters.Add (
+                               new CodeFieldReferenceExpression (
+                                       new CodeTypeReferenceExpression 
("System.Globalization.CultureInfo"),
+                                       "CurrentCulture"));
                        assign.Right = convert;
                        
                        method.Statements.Add (assign);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to