aboutsummaryrefslogtreecommitdiff
path: root/src/ext/Bal/WixToolset.Mba.Host/Exceptions.cs
blob: c68951f01a80b7e864071c62dfa987a846cab4c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.

namespace WixToolset.Mba.Host
{
    using System;
    using System.Runtime.Serialization;

    /// <summary>
    /// Base class for exception returned to the bootstrapper application host.
    /// </summary>
    [Serializable]
    public abstract class BootstrapperException : Exception
    {
        /// <summary>
        /// Creates an instance of the <see cref="BootstrapperException"/> base class with the given HRESULT.
        /// </summary>
        /// <param name="hr">The HRESULT for the exception that is used by the bootstrapper application host.</param>
        public BootstrapperException(int hr)
        {
            this.HResult = hr;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="BootstrapperException"/> class.
        /// </summary>
        /// <param name="message">Exception message.</param>
        public BootstrapperException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="BootstrapperException"/> class.
        /// </summary>
        /// <param name="message">Exception message</param>
        /// <param name="innerException">Inner exception associated with this one</param>
        public BootstrapperException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="BootstrapperException"/> class.
        /// </summary>
        /// <param name="info">Serialization information for this exception</param>
        /// <param name="context">Streaming context to serialize to</param>
        protected BootstrapperException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
    }

    /// <summary>
    /// The bootstrapper application assembly loaded by the host does not contain exactly one instance of the
    /// <see cref="Core.BootstrapperApplicationFactoryAttribute"/> class.
    /// </summary>
    /// <seealso cref="Core.BootstrapperApplicationFactoryAttribute"/>
    [Serializable]
    public class MissingAttributeException : BootstrapperException
    {
        /// <summary>
        /// Creates a new instance of the <see cref="MissingAttributeException"/> class.
        /// </summary>
        public MissingAttributeException()
            : base(NativeMethods.E_NOTFOUND)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MissingAttributeException"/> class.
        /// </summary>
        /// <param name="message">Exception message.</param>
        public MissingAttributeException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MissingAttributeException"/> class.
        /// </summary>
        /// <param name="message">Exception message</param>
        /// <param name="innerException">Inner exception associated with this one</param>
        public MissingAttributeException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MissingAttributeException"/> class.
        /// </summary>
        /// <param name="info">Serialization information for this exception</param>
        /// <param name="context">Streaming context to serialize to</param>
        protected MissingAttributeException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
    }

    /// <summary>
    /// The bootstrapper application factory specified by the <see cref="Core.BootstrapperApplicationFactoryAttribute"/>
    ///  does not extend the <see cref="Core.IBootstrapperApplicationFactory"/> base class.
    /// </summary>
    /// <seealso cref="Core.BaseBootstrapperApplicationFactory"/>
    /// <seealso cref="Core.BootstrapperApplicationFactoryAttribute"/>
    [Serializable]
    public class InvalidBootstrapperApplicationFactoryException : BootstrapperException
    {
        /// <summary>
        /// Creates a new instance of the <see cref="InvalidBootstrapperApplicationFactoryException"/> class.
        /// </summary>
        public InvalidBootstrapperApplicationFactoryException()
            : base(NativeMethods.E_UNEXPECTED)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="InvalidBootstrapperApplicationFactoryException"/> class.
        /// </summary>
        /// <param name="message">Exception message.</param>
        public InvalidBootstrapperApplicationFactoryException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="InvalidBootstrapperApplicationFactoryException"/> class.
        /// </summary>
        /// <param name="message">Exception message</param>
        /// <param name="innerException">Inner exception associated with this one</param>
        public InvalidBootstrapperApplicationFactoryException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="InvalidBootstrapperApplicationFactoryException"/> class.
        /// </summary>
        /// <param name="info">Serialization information for this exception</param>
        /// <param name="context">Streaming context to serialize to</param>
        protected InvalidBootstrapperApplicationFactoryException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
    }
}