summaryrefslogtreecommitdiffstats
path: root/tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-10-31 16:27:49 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-10-31 16:27:49 -0700
commit55d6e4be43225184f9a656e6d9cc8fc1e8e7387b (patch)
treec382ef957455af8a39f80789dff9b112e97c2fe6 /tools/Sandcastle/Source/BuildAssembler/BuildAssemblerLibrary/BuildComponent.cs
parent07a8ecbc4fc50d11179f7e0b3fadb9f2be430ae5 (diff)
parentebf5efb48cddbfaf08aec24117b7c5f9626f1c02 (diff)
downloadDotNetOpenAuth-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.cs82
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);
+
+
+}