diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-10-31 16:27:49 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2009-10-31 16:27:49 -0700 |
commit | 55d6e4be43225184f9a656e6d9cc8fc1e8e7387b (patch) | |
tree | c382ef957455af8a39f80789dff9b112e97c2fe6 /tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs | |
parent | 07a8ecbc4fc50d11179f7e0b3fadb9f2be430ae5 (diff) | |
parent | ebf5efb48cddbfaf08aec24117b7c5f9626f1c02 (diff) | |
download | DotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.zip DotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.tar.gz DotNetOpenAuth-55d6e4be43225184f9a656e6d9cc8fc1e8e7387b.tar.bz2 |
Merge branch 'contracts'
Diffstat (limited to 'tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs')
-rw-r--r-- | tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs b/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs new file mode 100644 index 0000000..04a68ea --- /dev/null +++ b/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs @@ -0,0 +1,82 @@ +// Copyright © Microsoft Corporation. +// This source file is subject to the Microsoft Permissive License. +// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx. +// All other rights reserved. + +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Xml.XPath; + +namespace Microsoft.Ddue.Tools { + + public abstract class BuildComponent : IDisposable { + + protected BuildComponent (BuildAssembler assembler, XPathNavigator configuration) { + this.assembler = assembler; + WriteMessage(MessageLevel.Info, "Instantiating component."); + } + + public abstract void Apply (XmlDocument document, string key); + + public virtual void Apply (XmlDocument document) { + Apply(document, null); + } + + public void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose (bool disposing) { + } + + // shared data + + private BuildAssembler assembler; + + public BuildAssembler BuildAssembler { + get { + return(assembler); + } + } + + //private MessageHandler handler; + + private static Dictionary<string,object> data = new Dictionary<string,object>(); + + protected static Dictionary<string,object> Data { + get { + return(data); + } + } + + // component messaging facility + + protected void OnComponentEvent (EventArgs e) { + assembler.OnComponentEvent(this.GetType(), e); + } + + protected void WriteMessage (MessageLevel level, string message) { + if (level == MessageLevel.Ignore) return; + MessageHandler handler = assembler.MessageHandler; + if (handler != null) handler(this.GetType(), level, message); + } + + } + + public enum MessageLevel { + Ignore, // don't show at all + Info, // informational message + Warn, // a minor problem occured + Error // a major problem occured + } + + + public delegate void MessageHandler (Type component, MessageLevel level, string message); + + +} |