// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
using System;
using System.CodeDom;
+using System.Configuration;
+using System.Web.Configuration;
using System.Web.UI;
-#if notyet
-using System.Web.UI.Design;
-#endif
namespace System.Web.Compilation {
-#if notyet
- [ExpressionEditor(typeof (ConnectionStringsExpressionEditor))]
-#endif
+ [ExpressionEditor("System.Web.UI.Design.ConnectionStringsExpressionEditor, " + Consts.AssemblySystem_Design)]
[ExpressionPrefix("ConnectionStrings")]
public class ConnectionStringsExpressionBuilder : ExpressionBuilder {
- public ConnectionStringsExpressionBuilder ()
+ public override object EvaluateExpression (object target, BoundPropertyEntry entry,
+ object parsedData, ExpressionBuilderContext context)
{
+ return GetConnectionString (entry.Expression.Trim());
}
- [MonoTODO]
- public override object EvaluateExpression (object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
- {
- throw new NotImplementedException ();
+ public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData,
+ ExpressionBuilderContext context)
+ {
+ Pair connString = parsedData as Pair;
+ return new CodeMethodInvokeExpression (
+ new CodeTypeReferenceExpression (typeof (ConnectionStringsExpressionBuilder)),
+ (bool)connString.Second ? "GetConnectionStringProviderName" : "GetConnectionString",
+ new CodeExpression [] {new CodePrimitiveExpression (connString.First)}
+ );
}
- [MonoTODO]
- public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
- {
- throw new NotImplementedException ();
- }
-
- [MonoTODO]
public static string GetConnectionString (string connectionStringName)
{
- throw new NotImplementedException ();
+ ConnectionStringSettings conn = WebConfigurationManager.ConnectionStrings [connectionStringName];
+ if (conn == null)
+ return String.Empty;
+ else
+ return conn.ConnectionString;
}
- [MonoTODO]
public static string GetConnectionStringProviderName (string connectionStringName)
{
- throw new NotImplementedException ();
+ ConnectionStringSettings conn = WebConfigurationManager.ConnectionStrings [connectionStringName];
+ if (conn == null)
+ return String.Empty;
+ else
+ return conn.ProviderName;
}
- [MonoTODO]
public override object ParseExpression (string expression, Type propertyType, ExpressionBuilderContext context)
{
- throw new NotImplementedException ();
+ bool wantsProviderName = false;
+ string connStringName = String.Empty;
+
+ if (!String.IsNullOrEmpty (expression)) {
+ int subidx = expression.Length;
+
+ if (expression.EndsWith (".providername", StringComparison.InvariantCultureIgnoreCase)) {
+ wantsProviderName = true;
+ subidx -= 13;
+ } else if (expression.EndsWith (".connectionstring", StringComparison.InvariantCultureIgnoreCase))
+ subidx -= 17;
+
+ connStringName = expression.Substring (0, subidx);
+ }
+
+ return new Pair (connStringName, wantsProviderName);
}
public override bool SupportsEvaluate {
}
-#endif
+