X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2FSystem.Web%2FTraceContext.cs;h=e887c76cff90e8d9b772dc41e425cfdcb1ceb24f;hb=4dcbe7950b18e271fdbc6f416b35b5d207b3a1f4;hp=5777ab4141fd631e2e456fee9b4cb14e36f44550;hpb=507730706de9318b3200962b6693ea32bdc8428a;p=mono.git diff --git a/mcs/class/System.Web/System.Web/TraceContext.cs b/mcs/class/System.Web/System.Web/TraceContext.cs index 5777ab4141f..e887c76cff9 100644 --- a/mcs/class/System.Web/System.Web/TraceContext.cs +++ b/mcs/class/System.Web/System.Web/TraceContext.cs @@ -1,14 +1,12 @@ -// -// System.Web.TraceContext -// -// Author: -// Patrik Torstensson (Patrik.Torstensson@labs2.com) -// Jackson Harper (jackson@ximian.com) -// -// (C) 2002 2003, Patrik Torstensson -// (C) 2003 Novell, Inc (http://www.novell.com) -// - +// +// System.Web.TraceContext +// +// Author: +// Patrik Torstensson (Patrik.Torstensson@labs2.com) +// Jackson Harper (jackson@ximian.com) +// +// (C) 2002 2003, Patrik Torstensson +// Copyright (C) 2003-2009 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -29,139 +27,198 @@ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // - -using System; -using System.Data; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace System.Web { - public sealed class TraceContext { - private HttpContext _Context; - private bool _Enabled; - private TraceMode _Mode; - private TraceData data; - private bool data_saved; - private bool _haveTrace; - - public TraceContext(HttpContext Context) { - _Context = Context; - _Enabled = false; - } - - - internal bool HaveTrace { - get { - return _haveTrace; + +using System.ComponentModel; +using System.Collections; +using System.Security.Permissions; +using System.Web.UI; + +namespace System.Web +{ + // CAS - no InheritanceDemand here as the class is sealed + [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] + public sealed class TraceContext + { + static readonly object traceFinishedEvent = new object (); + + HttpContext _Context; + TraceManager _traceManager; + bool _Enabled; + TraceMode _Mode = TraceMode.Default; + TraceData data; + bool data_saved; + bool _haveTrace; + Hashtable view_states; + Hashtable control_states; + Hashtable sizes; + EventHandlerList events = new EventHandlerList (); + + public event TraceContextEventHandler TraceFinished { + add { events.AddHandler (traceFinishedEvent, value); } + remove { events.AddHandler (traceFinishedEvent, value); } + } + + public TraceContext (HttpContext Context) + { + _Context = Context; + } + + internal bool HaveTrace { + get { + return _haveTrace; + } + } + + public bool IsEnabled { + get { + if (!_haveTrace) + return TraceManager.Enabled; + return _Enabled; + } + + set { + if (value && data == null) + data = new TraceData (); + _haveTrace = true; + _Enabled = value; + } + } + + TraceManager TraceManager + { + get + { + if (_traceManager == null) + _traceManager = HttpRuntime.TraceManager; + + return _traceManager; + } + } + + public TraceMode TraceMode { + get { + return (_Mode == TraceMode.Default) ? TraceManager.TraceMode : _Mode; + } + set { + _Mode = value; + } + } + + public void Warn(string msg) + { + Write (String.Empty, msg, null, true); + } + + public void Warn(string category, string msg) + { + Write (category, msg, null, true); + } + + public void Warn (string category, string msg, Exception error) + { + Write (category, msg, error, true); + } + + public void Write (string msg) + { + Write (String.Empty, msg, null, false); + } + + public void Write (string category, string msg) + { + Write (category, msg, null, false); + } + + public void Write (string category, string msg, Exception error) + { + Write (category, msg, error, false); + } + + void Write (string category, string msg, Exception error, bool Warning) + { + if (!IsEnabled) + return; + if (data == null) + data = new TraceData (); + data.Write (category, msg, error, Warning); + } + + internal void SaveData () + { + if (data == null) + data = new TraceData (); + + data.TraceMode = _Context.Trace.TraceMode; + + SetRequestDetails (); + if (_Context.Handler is Page) + data.AddControlTree ((Page) _Context.Handler, view_states, control_states, sizes); + + AddCookies (); + AddHeaders (); + AddServerVars (); + TraceManager.AddTraceData (data); + data_saved = true; + } + + internal void SaveViewState (Control ctrl, object vs) + { + if (view_states == null) + view_states = new Hashtable (); + + view_states [ctrl] = vs; + } + + internal void SaveControlState (Control ctrl, object vs) { + if (control_states == null) + control_states = new Hashtable (); + + control_states [ctrl] = vs; + } + + internal void SaveSize (Control ctrl, int size) + { + if (sizes == null) + sizes = new Hashtable (); + + sizes [ctrl] = size; + } + + internal void Render (HtmlTextWriter output) + { + if (!data_saved) + SaveData (); + data.Render (output); + } + + void SetRequestDetails () + { + data.RequestPath = _Context.Request.FilePath; + data.SessionID = (_Context.Session != null ? _Context.Session.SessionID : String.Empty); + data.RequestType = _Context.Request.RequestType; + data.RequestTime = _Context.Timestamp; + data.StatusCode = _Context.Response.StatusCode; + data.RequestEncoding = _Context.Request.ContentEncoding; + data.ResponseEncoding = _Context.Response.ContentEncoding; + } + + void AddCookies () + { + foreach (string key in _Context.Request.Cookies.Keys) + data.AddCookie (key, _Context.Request.Cookies [key].Value); + } + + void AddHeaders () + { + foreach (string key in _Context.Request.Headers.Keys) + data.AddHeader (key, _Context.Request.Headers [key]); + } + + void AddServerVars () + { + foreach (string key in _Context.Request.ServerVariables) + data.AddServerVar (key, _Context.Request.ServerVariables [key]); } } - - public bool IsEnabled { - get { - if (!_haveTrace) - return HttpRuntime.TraceManager.Enabled; - return _Enabled; - } - - set { - if (value && data == null) - data = new TraceData (); - _haveTrace = true; - _Enabled = value; - } - } - - public TraceMode TraceMode { - get { - return _Mode; - } - - set { - _Mode = value; - } - } - - public void Warn(string msg) { - Write(String.Empty, msg, null, true); - } - - public void Warn(string category, string msg) { - Write(category, msg, null, true); - } - - public void Warn(string category, string msg, Exception error) { - Write(category, msg, error, true); - } - - public void Write(string msg) { - Write(String.Empty, msg, null, false); - } - - public void Write(string category, string msg) { - Write(category, msg, null, false); - } - - public void Write(string category, string msg, Exception error) { - Write(category, msg, error, false); - } - - private void Write(string category, string msg, Exception error, bool Warning) { - if (!IsEnabled) - return; - if (data == null) - data = new TraceData (); - data.Write (category, msg, error, Warning); - } - - internal void SaveData () - { - if (data == null) - data = new TraceData (); - SetRequestDetails (); - if (_Context.Handler is Page) - data.AddControlTree ((Page) _Context.Handler); - - AddCookies (); - AddHeaders (); - AddServerVars (); - HttpRuntime.TraceManager.AddTraceData (data); - data_saved = true; - } - - internal void Render (HtmlTextWriter output) - { - if (!data_saved) - SaveData (); - data.Render (output); - } - - private void SetRequestDetails () - { - data.RequestPath = _Context.Request.FilePath; - data.SessionID = (_Context.Session != null ? _Context.Session.SessionID : String.Empty); - data.RequestType = _Context.Request.RequestType; - data.RequestTime = _Context.Timestamp; - data.StatusCode = _Context.Response.StatusCode; - data.RequestEncoding = _Context.Request.ContentEncoding; - data.ResponseEncoding = _Context.Response.ContentEncoding; - } - - private void AddCookies () - { - foreach (string key in _Context.Request.Cookies.Keys) - data.AddCookie (key, _Context.Request.Cookies [key].Value); - } - - private void AddHeaders () - { - foreach (string key in _Context.Request.Headers.Keys) - data.AddHeader (key, _Context.Request.Headers [key]); - } - - private void AddServerVars () - { - foreach (string key in _Context.Request.ServerVariables) - data.AddServerVar (key, _Context.Request.ServerVariables [key]); - } - } -} +} +