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