diff --git a/src/Umbraco.Core/Collections/ObservableDictionary.cs b/src/Umbraco.Core/Collections/ObservableDictionary.cs
index 40269aa4eb..c6aedab377 100644
--- a/src/Umbraco.Core/Collections/ObservableDictionary.cs
+++ b/src/Umbraco.Core/Collections/ObservableDictionary.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Collections
{
@@ -26,7 +27,7 @@ namespace Umbraco.Core.Collections
/// The equality comparer to use when comparing keys, or null to use the default comparer.
public ObservableDictionary(Func keySelector, IEqualityComparer equalityComparer = null)
{
- KeySelector = keySelector ?? throw new ArgumentException("keySelector");
+ KeySelector = keySelector ?? throw new ArgumentException(nameof(keySelector));
Indecies = new Dictionary(equalityComparer);
}
@@ -36,7 +37,7 @@ namespace Umbraco.Core.Collections
{
var key = KeySelector(item);
if (Indecies.ContainsKey(key))
- throw new DuplicateKeyException(key.ToString());
+ throw new ArgumentException($"An element with the same key '{key}' already exists in the dictionary.", nameof(item));
if (index != Count)
{
@@ -91,7 +92,7 @@ namespace Umbraco.Core.Collections
{
//confirm key matches
if (!KeySelector(value).Equals(key))
- throw new InvalidOperationException("Key of new value does not match");
+ throw new InvalidOperationException("Key of new value does not match.");
if (!Indecies.ContainsKey(key))
{
@@ -118,7 +119,7 @@ namespace Umbraco.Core.Collections
//confirm key matches
if (!KeySelector(value).Equals(key))
- throw new InvalidOperationException("Key of new value does not match");
+ throw new InvalidOperationException("Key of new value does not match.");
this[Indecies[key]] = value;
return true;
@@ -155,12 +156,12 @@ namespace Umbraco.Core.Collections
{
if (!Indecies.ContainsKey(currentKey))
{
- throw new InvalidOperationException("No item with the key " + currentKey + "was found in the collection");
+ throw new InvalidOperationException($"No item with the key '{currentKey}' was found in the dictionary.");
}
if (ContainsKey(newKey))
{
- throw new DuplicateKeyException(newKey.ToString());
+ throw new ArgumentException($"An element with the same key '{newKey}' already exists in the dictionary.", nameof(newKey));
}
var currentIndex = Indecies[currentKey];
@@ -234,16 +235,5 @@ namespace Umbraco.Core.Collections
}
#endregion
-
- internal class DuplicateKeyException : Exception
- {
- public DuplicateKeyException(string key)
- : base("Attempted to insert duplicate key \"" + key + "\" in collection.")
- {
- Key = key;
- }
-
- public string Key { get; }
- }
}
}
diff --git a/src/Umbraco.Core/Composing/LightInject/LightInjectException.cs b/src/Umbraco.Core/Composing/LightInject/LightInjectException.cs
index fa0aed21ca..e1344468f9 100644
--- a/src/Umbraco.Core/Composing/LightInject/LightInjectException.cs
+++ b/src/Umbraco.Core/Composing/LightInject/LightInjectException.cs
@@ -1,4 +1,5 @@
using System;
+using System.Runtime.Serialization;
using System.Text;
namespace Umbraco.Core.Composing.LightInject
@@ -6,20 +7,51 @@ namespace Umbraco.Core.Composing.LightInject
///
/// Represents errors that occur due to LightInject.
///
+ ///
+ [Serializable]
public class LightInjectException : Exception
{
- public LightInjectException(string message)
- : base(message)
- { }
-
- public LightInjectException(string message, Exception innerException)
- : base(message, innerException)
- { }
-
private const string LightInjectUnableToResolveType = "Unable to resolve type:";
private const string LightInjectUnresolvedDependency = "Unresolved dependency ";
private const string LightInjectRequestedDependency = "[Requested dependency:";
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public LightInjectException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public LightInjectException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public LightInjectException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected LightInjectException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
+
+ ///
+ /// Tries to throw the exception with additional details.
+ ///
+ /// The exception.
+ ///
public static void TryThrow(Exception e)
{
var ex = e as InvalidOperationException;
@@ -32,6 +64,12 @@ namespace Umbraco.Core.Composing.LightInject
throw new LightInjectException(sb.ToString(), e);
}
+ ///
+ /// Tries to throw the exception with additional details.
+ ///
+ /// The exception.
+ /// The implementing type.
+ ///
public static void TryThrow(Exception e, Type implementingType)
{
var ex = e as InvalidOperationException;
@@ -45,6 +83,11 @@ namespace Umbraco.Core.Composing.LightInject
throw new LightInjectException(sb.ToString(), e);
}
+ ///
+ /// Writes the details.
+ ///
+ /// The exception.
+ /// The to write the details to.
private static void WriteDetails(InvalidOperationException ex, StringBuilder sb)
{
ex = ex.InnerException as InvalidOperationException;
diff --git a/src/Umbraco.Core/Composing/TypeLoader.cs b/src/Umbraco.Core/Composing/TypeLoader.cs
index fe7a561eca..9f3b4b6858 100644
--- a/src/Umbraco.Core/Composing/TypeLoader.cs
+++ b/src/Umbraco.Core/Composing/TypeLoader.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
+using System.Runtime.Serialization;
using System.Text;
using System.Threading;
using System.Web;
@@ -813,11 +814,44 @@ namespace Umbraco.Core.Composing
}
///
- /// Represents the error that occurs when a type was not found in the cache type
- /// list with the specified TypeResolutionKind.
+ /// Represents the error that occurs when a type was not found in the cache type list with the specified TypeResolutionKind.
///
+ ///
+ [Serializable]
internal class CachedTypeNotFoundInFileException : Exception
- { }
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public CachedTypeNotFoundInFileException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public CachedTypeNotFoundInFileException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public CachedTypeNotFoundInFileException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected CachedTypeNotFoundInFileException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
+ }
#endregion
}
diff --git a/src/Umbraco.Core/Exceptions/ArgumentNullOrEmptyException.cs b/src/Umbraco.Core/Exceptions/ArgumentNullOrEmptyException.cs
index 90cc20c404..037d35d0ee 100644
--- a/src/Umbraco.Core/Exceptions/ArgumentNullOrEmptyException.cs
+++ b/src/Umbraco.Core/Exceptions/ArgumentNullOrEmptyException.cs
@@ -1,16 +1,24 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
///
- /// The exception that is thrown when a null reference, or an empty argument,
- /// is passed to a method that does not accept it as a valid argument.
+ /// The exception that is thrown when a null reference, or an empty argument, is passed to a method that does not accept it as a valid argument.
///
+ ///
+ [Obsolete("Throw an ArgumentNullException when the parameter is null or an ArgumentException when its empty instead.")]
+ [Serializable]
public class ArgumentNullOrEmptyException : ArgumentNullException
{
///
- /// Initializes a new instance of the class
- /// with the name of the parameter that caused this exception.
+ /// Initializes a new instance of the class.
+ ///
+ public ArgumentNullOrEmptyException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class with the name of the parameter that caused this exception.
///
/// The named of the parameter that caused the exception.
public ArgumentNullOrEmptyException(string paramName)
@@ -18,13 +26,30 @@ namespace Umbraco.Core.Exceptions
{ }
///
- /// Initializes a new instance of the class
- /// with a specified error message and the name of the parameter that caused this exception.
+ /// Initializes a new instance of the class with a specified error message and the name of the parameter that caused this exception.
///
/// The named of the parameter that caused the exception.
/// A message that describes the error.
public ArgumentNullOrEmptyException(string paramName, string message)
: base(paramName, message)
{ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for this exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public ArgumentNullOrEmptyException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The object that holds the serialized object data.
+ /// An object that describes the source or destination of the serialized data.
+ protected ArgumentNullOrEmptyException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Exceptions/AuthorizationException.cs b/src/Umbraco.Core/Exceptions/AuthorizationException.cs
index 955fec270b..b87a8da8b8 100644
--- a/src/Umbraco.Core/Exceptions/AuthorizationException.cs
+++ b/src/Umbraco.Core/Exceptions/AuthorizationException.cs
@@ -1,14 +1,45 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
+ ///
+ /// The exception that is thrown when authorization failed.
+ ///
+ ///
+ [Serializable]
public class AuthorizationException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public AuthorizationException()
{ }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public AuthorizationException(string message)
: base(message)
{ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public AuthorizationException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected AuthorizationException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Exceptions/BootFailedException.cs b/src/Umbraco.Core/Exceptions/BootFailedException.cs
index c3262d26c6..e8ffe1d2e9 100644
--- a/src/Umbraco.Core/Exceptions/BootFailedException.cs
+++ b/src/Umbraco.Core/Exceptions/BootFailedException.cs
@@ -1,4 +1,5 @@
using System;
+using System.Runtime.Serialization;
using System.Text;
namespace Umbraco.Core.Exceptions
@@ -6,6 +7,8 @@ namespace Umbraco.Core.Exceptions
///
/// An exception that is thrown if the Umbraco application cannot boot.
///
+ ///
+ [Serializable]
public class BootFailedException : Exception
{
///
@@ -14,27 +17,47 @@ namespace Umbraco.Core.Exceptions
public const string DefaultMessage = "Boot failed: Umbraco cannot run. See Umbraco's log file for more details.";
///
- /// Initializes a new instance of the class with a specified error message.
+ /// Initializes a new instance of the class.
///
- /// The message that describes the error.
+ public BootFailedException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class with a specified error message.
+ ///
+ /// The message that describes the error.
public BootFailedException(string message)
: base(message)
{ }
///
- /// Initializes a new instance of the class with a specified error message
+ /// Initializes a new instance of the class with a specified error message
/// and a reference to the inner exception which is the cause of this exception.
///
- /// The message that describes the error.
- /// The inner exception, or null.
- public BootFailedException(string message, Exception inner)
- : base(message, inner)
+ /// The message that describes the error.
+ /// The inner exception, or null.
+ public BootFailedException(string message, Exception innerException)
+ : base(message, innerException)
{ }
///
- /// Rethrows a captured .
+ /// Initializes a new instance of the class.
///
- /// The exception can be null, in which case a default message is used.
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected BootFailedException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
+
+ ///
+ /// Rethrows a captured .
+ ///
+ /// The boot failed exception.
+ ///
+ ///
+ ///
+ /// The exception can be null, in which case a default message is used.
+ ///
public static void Rethrow(BootFailedException bootFailedException)
{
if (bootFailedException == null)
diff --git a/src/Umbraco.Core/Exceptions/ConnectionException.cs b/src/Umbraco.Core/Exceptions/ConnectionException.cs
index 64fdbeee52..517d0633a0 100644
--- a/src/Umbraco.Core/Exceptions/ConnectionException.cs
+++ b/src/Umbraco.Core/Exceptions/ConnectionException.cs
@@ -1,12 +1,45 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
+ ///
+ /// The exception that is thrown when a connection fails.
+ ///
+ ///
+ [Serializable]
internal class ConnectionException : Exception
{
- public ConnectionException(string message, Exception innerException) : base(message, innerException)
- {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ConnectionException()
+ { }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public ConnectionException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public ConnectionException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected ConnectionException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Exceptions/DataOperationException.cs b/src/Umbraco.Core/Exceptions/DataOperationException.cs
index 14fefcf9d3..c004e391fe 100644
--- a/src/Umbraco.Core/Exceptions/DataOperationException.cs
+++ b/src/Umbraco.Core/Exceptions/DataOperationException.cs
@@ -1,21 +1,98 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Serializable]
internal class DataOperationException : Exception
+ where T : Enum
{
+ ///
+ /// Gets the operation.
+ ///
+ ///
+ /// The operation.
+ ///
+ ///
+ /// This object should be serializable to prevent a to be thrown.
+ ///
public T Operation { get; private set; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public DataOperationException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public DataOperationException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public DataOperationException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The operation.
+ public DataOperationException(T operation)
+ : this(operation, "Data operation exception: " + operation)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The operation.
+ /// The message.
public DataOperationException(T operation, string message)
: base(message)
{
Operation = operation;
}
- public DataOperationException(T operation)
- : base("Data operation exception: " + operation)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ /// info
+ protected DataOperationException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
{
- Operation = operation;
+ Operation = (T)Enum.Parse(typeof(T), info.GetString(nameof(Operation)));
+ }
+
+ ///
+ /// When overridden in a derived class, sets the with information about the exception.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ /// info
+ public override void GetObjectData(SerializationInfo info, StreamingContext context)
+ {
+ if (info == null)
+ {
+ throw new ArgumentNullException(nameof(info));
+ }
+
+ info.AddValue(nameof(Operation), Enum.GetName(typeof(T), Operation));
+
+ base.GetObjectData(info, context);
}
}
}
diff --git a/src/Umbraco.Core/Exceptions/InvalidCompositionException.cs b/src/Umbraco.Core/Exceptions/InvalidCompositionException.cs
index 9d154c6a6f..684e23b020 100644
--- a/src/Umbraco.Core/Exceptions/InvalidCompositionException.cs
+++ b/src/Umbraco.Core/Exceptions/InvalidCompositionException.cs
@@ -1,44 +1,126 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
+ ///
+ /// The exception that is thrown when a composition is invalid.
+ ///
+ ///
+ [Serializable]
public class InvalidCompositionException : Exception
{
- public InvalidCompositionException(string contentTypeAlias, string addedCompositionAlias, string[] propertyTypeAliass)
- {
- ContentTypeAlias = contentTypeAlias;
- AddedCompositionAlias = addedCompositionAlias;
- PropertyTypeAliases = propertyTypeAliass;
- }
+ ///
+ /// Gets the content type alias.
+ ///
+ ///
+ /// The content type alias.
+ ///
+ public string ContentTypeAlias { get; }
- public InvalidCompositionException(string contentTypeAlias, string[] propertyTypeAliass)
- {
- ContentTypeAlias = contentTypeAlias;
- PropertyTypeAliases = propertyTypeAliass;
- }
+ ///
+ /// Gets the added composition alias.
+ ///
+ ///
+ /// The added composition alias.
+ ///
+ public string AddedCompositionAlias { get; }
- public string ContentTypeAlias { get; private set; }
+ ///
+ /// Gets the property type aliases.
+ ///
+ ///
+ /// The property type aliases.
+ ///
+ public string[] PropertyTypeAliases { get; }
- public string AddedCompositionAlias { get; private set; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public InvalidCompositionException()
+ { }
- public string[] PropertyTypeAliases { get; private set; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The content type alias.
+ /// The property type aliases.
+ public InvalidCompositionException(string contentTypeAlias, string[] propertyTypeAliases)
+ : this(contentTypeAlias, null, propertyTypeAliases)
+ { }
- public override string Message
- {
- get
- {
- return AddedCompositionAlias.IsNullOrWhiteSpace()
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The content type alias.
+ /// The added composition alias.
+ /// The property type aliases.
+ public InvalidCompositionException(string contentTypeAlias, string addedCompositionAlias, string[] propertyTypeAliases)
+ : this(addedCompositionAlias.IsNullOrWhiteSpace()
? string.Format(
"ContentType with alias '{0}' has an invalid composition " +
"and there was a conflict on the following PropertyTypes: '{1}'. " +
"PropertyTypes must have a unique alias across all Compositions in order to compose a valid ContentType Composition.",
- ContentTypeAlias, string.Join(", ", PropertyTypeAliases))
+ contentTypeAlias, string.Join(", ", propertyTypeAliases))
: string.Format(
"ContentType with alias '{0}' was added as a Composition to ContentType with alias '{1}', " +
"but there was a conflict on the following PropertyTypes: '{2}'. " +
"PropertyTypes must have a unique alias across all Compositions in order to compose a valid ContentType Composition.",
- AddedCompositionAlias, ContentTypeAlias, string.Join(", ", PropertyTypeAliases));
+ addedCompositionAlias, contentTypeAlias, string.Join(", ", propertyTypeAliases)))
+ {
+ ContentTypeAlias = contentTypeAlias;
+ AddedCompositionAlias = addedCompositionAlias;
+ PropertyTypeAliases = propertyTypeAliases;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public InvalidCompositionException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public InvalidCompositionException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected InvalidCompositionException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ {
+ ContentTypeAlias = info.GetString(nameof(ContentTypeAlias));
+ AddedCompositionAlias = info.GetString(nameof(AddedCompositionAlias));
+ PropertyTypeAliases = (string[])info.GetValue(nameof(PropertyTypeAliases), typeof(string[]));
+ }
+
+ ///
+ /// When overridden in a derived class, sets the with information about the exception.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ /// info
+ public override void GetObjectData(SerializationInfo info, StreamingContext context)
+ {
+ if (info == null)
+ {
+ throw new ArgumentNullException(nameof(info));
}
+
+ info.AddValue(nameof(ContentTypeAlias), ContentTypeAlias);
+ info.AddValue(nameof(AddedCompositionAlias), AddedCompositionAlias);
+ info.AddValue(nameof(PropertyTypeAliases), PropertyTypeAliases);
+
+ base.GetObjectData(info, context);
}
}
}
diff --git a/src/Umbraco.Core/Exceptions/PanicException.cs b/src/Umbraco.Core/Exceptions/PanicException.cs
index 4d41cafc65..75edf7fd73 100644
--- a/src/Umbraco.Core/Exceptions/PanicException.cs
+++ b/src/Umbraco.Core/Exceptions/PanicException.cs
@@ -4,25 +4,42 @@ using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
///
- /// Internal exception that in theory should never ben thrown, it is only thrown in circumstances that should never happen
+ /// Represents an internal exception that in theory should never been thrown, it is only thrown in circumstances that should never happen.
///
+ ///
[Serializable]
- internal class PanicException : Exception
+ public class PanicException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public PanicException()
- {
- }
+ { }
- public PanicException(string message) : base(message)
- {
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public PanicException(string message)
+ : base(message)
+ { }
- public PanicException(string message, Exception innerException) : base(message, innerException)
- {
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public PanicException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
- protected PanicException(SerializationInfo info, StreamingContext context) : base(info, context)
- {
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected PanicException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Exceptions/WontImplementException.cs b/src/Umbraco.Core/Exceptions/WontImplementException.cs
index 7774bf53de..e354bc4c3d 100644
--- a/src/Umbraco.Core/Exceptions/WontImplementException.cs
+++ b/src/Umbraco.Core/Exceptions/WontImplementException.cs
@@ -1,27 +1,52 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Exceptions
{
///
/// The exception that is thrown when a requested method or operation is not, and will not be, implemented.
///
- /// The is to be used when some code is not implemented,
+ ///
+ /// The is to be used when some code is not implemented,
/// but should eventually be implemented (i.e. work in progress) and is reported by tools such as ReSharper.
/// This exception is to be used when some code is not implemented, and is not meant to be, for whatever
- /// reason.
+ /// reason.
+ ///
+ ///
+ [Serializable]
+ [Obsolete("If a method or operation is not, and will not be, implemented, it is invalid or not supported, so we should throw either an InvalidOperationException or NotSupportedException instead.")]
public class WontImplementException : NotImplementedException
{
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
public WontImplementException()
{ }
///
- /// Initializes a new instance of the class with a specified reason message.
+ /// Initializes a new instance of the class with a specified reason message.
///
+ /// The error message that explains the reason for the exception.
public WontImplementException(string message)
: base(message)
{ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception. If the parameter is not , the current exception is raised in a block that handles the inner exception.
+ public WontImplementException(string message, Exception inner)
+ : base(message, inner)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected WontImplementException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/IO/FileSecurityException.cs b/src/Umbraco.Core/IO/FileSecurityException.cs
index 7b4f7d2625..8ce9ab34a5 100644
--- a/src/Umbraco.Core/IO/FileSecurityException.cs
+++ b/src/Umbraco.Core/IO/FileSecurityException.cs
@@ -1,20 +1,46 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Runtime.Serialization;
namespace Umbraco.Core.IO
{
+ ///
+ /// The exception that is thrown when the caller does not have the required permission to access a file.
+ ///
+ ///
+ [Obsolete("Throw an UnauthorizedAccessException instead.")]
+ [Serializable]
public class FileSecurityException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public FileSecurityException()
- {
+ { }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public FileSecurityException(string message)
+ : base(message)
+ { }
- public FileSecurityException(string message) : base(message)
- {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public FileSecurityException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected FileSecurityException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/IO/MediaFileSystem.cs b/src/Umbraco.Core/IO/MediaFileSystem.cs
index 2ce1230bcc..05c02171ba 100644
--- a/src/Umbraco.Core/IO/MediaFileSystem.cs
+++ b/src/Umbraco.Core/IO/MediaFileSystem.cs
@@ -1,15 +1,10 @@
using System;
using System.Collections.Generic;
-using System.Configuration;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
-using Umbraco.Core.Composing;
-using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.UmbracoSettings;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
-using Umbraco.Core.Media;
using Umbraco.Core.Models;
namespace Umbraco.Core.IO
@@ -92,7 +87,8 @@ namespace Umbraco.Core.IO
{
if (content == null) throw new ArgumentNullException(nameof(content));
if (propertyType == null) throw new ArgumentNullException(nameof(propertyType));
- if (string.IsNullOrWhiteSpace(filename)) throw new ArgumentNullOrEmptyException(nameof(filename));
+ if (filename == null) throw new ArgumentNullException(nameof(filename));
+ if (string.IsNullOrWhiteSpace(filename)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(filename));
if (filestream == null) throw new ArgumentNullException(nameof(filestream));
// clear the old file, if any
@@ -111,7 +107,8 @@ namespace Umbraco.Core.IO
{
if (content == null) throw new ArgumentNullException(nameof(content));
if (propertyType == null) throw new ArgumentNullException(nameof(propertyType));
- if (string.IsNullOrWhiteSpace(sourcepath)) throw new ArgumentNullOrEmptyException(nameof(sourcepath));
+ if (sourcepath == null) throw new ArgumentNullException(nameof(sourcepath));
+ if (string.IsNullOrWhiteSpace(sourcepath)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(sourcepath));
// ensure we have a file to copy
if (FileExists(sourcepath) == false) return null;
diff --git a/src/Umbraco.Core/IO/PhysicalFileSystem.cs b/src/Umbraco.Core/IO/PhysicalFileSystem.cs
index e4edb2b86b..96aaf7ca27 100644
--- a/src/Umbraco.Core/IO/PhysicalFileSystem.cs
+++ b/src/Umbraco.Core/IO/PhysicalFileSystem.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using Umbraco.Core.Composing;
-using Umbraco.Core.Exceptions;
using System.Threading;
using Umbraco.Core.Logging;
@@ -39,9 +38,11 @@ namespace Umbraco.Core.IO
public PhysicalFileSystem(string rootPath, string rootUrl)
{
- if (string.IsNullOrEmpty(rootPath)) throw new ArgumentNullOrEmptyException(nameof(rootPath));
- if (string.IsNullOrEmpty(rootUrl)) throw new ArgumentNullOrEmptyException(nameof(rootUrl));
- if (rootPath.StartsWith("~/")) throw new ArgumentException("The rootPath argument cannot be a virtual path and cannot start with '~/'");
+ if (rootPath == null) throw new ArgumentNullException(nameof(rootPath));
+ if (string.IsNullOrEmpty(rootPath)) throw new ArgumentException("Value can't be empty.", nameof(rootPath));
+ if (rootUrl == null) throw new ArgumentNullException(nameof(rootUrl));
+ if (string.IsNullOrEmpty(rootUrl)) throw new ArgumentException("Value can't be empty.", nameof(rootUrl));
+ if (rootPath.StartsWith("~/")) throw new ArgumentException("Value can't be a virtual path and start with '~/'.", nameof(rootPath));
// rootPath should be... rooted, as in, it's a root path!
if (Path.IsPathRooted(rootPath) == false)
@@ -314,7 +315,7 @@ namespace Umbraco.Core.IO
// nothing prevents us to reach the file, security-wise, yet it is outside
// this filesystem's root - throw
- throw new FileSecurityException("File '" + opath + "' is outside this filesystem's root.");
+ throw new UnauthorizedAccessException("File '" + opath + "' is outside this filesystem's root.");
}
///
diff --git a/src/Umbraco.Core/Manifest/ManifestParser.cs b/src/Umbraco.Core/Manifest/ManifestParser.cs
index efd9e92b1f..1ecc738b95 100644
--- a/src/Umbraco.Core/Manifest/ManifestParser.cs
+++ b/src/Umbraco.Core/Manifest/ManifestParser.cs
@@ -5,7 +5,6 @@ using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Umbraco.Core.Cache;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.PropertyEditors;
@@ -42,7 +41,8 @@ namespace Umbraco.Core.Manifest
_cache = appCaches.RuntimeCache;
_validators = validators ?? throw new ArgumentNullException(nameof(validators));
_filters = filters ?? throw new ArgumentNullException(nameof(filters));
- if (string.IsNullOrWhiteSpace(path)) throw new ArgumentNullOrEmptyException(nameof(path));
+ if (path == null) throw new ArgumentNullException(nameof(path));
+ if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(path));
Path = path;
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
@@ -155,8 +155,8 @@ namespace Umbraco.Core.Manifest
///
internal PackageManifest ParseManifest(string text)
{
- if (string.IsNullOrWhiteSpace(text))
- throw new ArgumentNullOrEmptyException(nameof(text));
+ if (text == null) throw new ArgumentNullException(nameof(text));
+ if (string.IsNullOrWhiteSpace(text)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(text));
var manifest = JsonConvert.DeserializeObject(text,
new DataEditorConverter(_logger),
diff --git a/src/Umbraco.Core/Migrations/DataLossException.cs b/src/Umbraco.Core/Migrations/DataLossException.cs
index 6ff332f626..1ba10bce62 100644
--- a/src/Umbraco.Core/Migrations/DataLossException.cs
+++ b/src/Umbraco.Core/Migrations/DataLossException.cs
@@ -1,22 +1,45 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Migrations
{
///
- /// Used if a migration has executed but the whole process has failed and cannot be rolled back
+ /// The exception that is thrown if a migration has executed, but the whole process has failed and cannot be rolled back.
///
+ ///
+ [Serializable]
internal class DataLossException : Exception
{
- public DataLossException(string msg)
- : base(msg)
- {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public DataLossException()
+ { }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public DataLossException(string message)
+ : base(message)
+ { }
- public DataLossException(string msg, Exception inner)
- : base(msg, inner)
- {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The inner exception.
+ public DataLossException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected DataLossException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Migrations/Expressions/Delete/DeleteBuilder.cs b/src/Umbraco.Core/Migrations/Expressions/Delete/DeleteBuilder.cs
index 9a4f437f62..65c15456a5 100644
--- a/src/Umbraco.Core/Migrations/Expressions/Delete/DeleteBuilder.cs
+++ b/src/Umbraco.Core/Migrations/Expressions/Delete/DeleteBuilder.cs
@@ -1,4 +1,4 @@
-using Umbraco.Core.Exceptions;
+using System;
using Umbraco.Core.Migrations.Expressions.Common;
using Umbraco.Core.Migrations.Expressions.Delete.Column;
using Umbraco.Core.Migrations.Expressions.Delete.Constraint;
@@ -39,8 +39,9 @@ namespace Umbraco.Core.Migrations.Expressions.Delete
///
public IExecutableBuilder KeysAndIndexes(string tableName, bool local = true, bool foreign = true)
{
- if (tableName.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(tableName));
+ if (tableName == null) throw new ArgumentNullException(nameof(tableName));
+ if (string.IsNullOrWhiteSpace(tableName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(tableName));
+
return new DeleteKeysAndIndexesBuilder(_context) { TableName = tableName, DeleteLocal = local, DeleteForeign = foreign };
}
diff --git a/src/Umbraco.Core/Migrations/IncompleteMigrationExpressionException.cs b/src/Umbraco.Core/Migrations/IncompleteMigrationExpressionException.cs
index 91d1838d6f..3c81e2f0e2 100644
--- a/src/Umbraco.Core/Migrations/IncompleteMigrationExpressionException.cs
+++ b/src/Umbraco.Core/Migrations/IncompleteMigrationExpressionException.cs
@@ -1,28 +1,49 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Migrations
{
///
- /// Represents errors that occurs when a migration exception is not executed.
+ /// The exception that is thrown when a migration expression is not executed.
///
///
- /// Migration expression such as Alter.Table(...).Do() *must* end with Do() else they are
- /// not executed. When a non-executed expression is detected, an IncompleteMigrationExpressionException
- /// is thrown.
+ /// Migration expressions such as Alter.Table(...).Do() must end with Do(), else they are not executed.
+ /// When a non-executed expression is detected, an IncompleteMigrationExpressionException is thrown.
///
+ ///
+ [Serializable]
public class IncompleteMigrationExpressionException : Exception
{
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
public IncompleteMigrationExpressionException()
{ }
///
- /// Initializes a new instance of the class with a message.
+ /// Initializes a new instance of the class with a message.
///
+ /// The message that describes the error.
public IncompleteMigrationExpressionException(string message)
: base(message)
{ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public IncompleteMigrationExpressionException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected IncompleteMigrationExpressionException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs b/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
index d86c682bd5..d5d8bbab6f 100644
--- a/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
+++ b/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
@@ -5,7 +5,6 @@ using System.IO;
using System.Linq;
using System.Xml.Linq;
using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Upgrade;
@@ -278,8 +277,10 @@ namespace Umbraco.Core.Migrations.Install
/// A logger.
private static void SaveConnectionString(string connectionString, string providerName, ILogger logger)
{
- if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentNullOrEmptyException(nameof(connectionString));
- if (string.IsNullOrWhiteSpace(providerName)) throw new ArgumentNullOrEmptyException(nameof(providerName));
+ if (connectionString == null) throw new ArgumentNullException(nameof(connectionString));
+ if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(connectionString));
+ if (providerName == null) throw new ArgumentNullException(nameof(providerName));
+ if (string.IsNullOrWhiteSpace(providerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(providerName));
var fileSource = "web.config";
var fileName = IOHelper.MapPath(SystemDirectories.Root +"/" + fileSource);
diff --git a/src/Umbraco.Core/Migrations/MigrationPlan.cs b/src/Umbraco.Core/Migrations/MigrationPlan.cs
index 37d1a03a5a..89c3c809e8 100644
--- a/src/Umbraco.Core/Migrations/MigrationPlan.cs
+++ b/src/Umbraco.Core/Migrations/MigrationPlan.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Scoping;
using Type = System.Type;
@@ -25,7 +24,9 @@ namespace Umbraco.Core.Migrations
/// The name of the plan.
public MigrationPlan(string name)
{
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+
Name = name;
}
@@ -43,7 +44,8 @@ namespace Umbraco.Core.Migrations
private MigrationPlan Add(string sourceState, string targetState, Type migration)
{
if (sourceState == null) throw new ArgumentNullException(nameof(sourceState));
- if (string.IsNullOrWhiteSpace(targetState)) throw new ArgumentNullOrEmptyException(nameof(targetState));
+ if (targetState == null) throw new ArgumentNullException(nameof(targetState));
+ if (string.IsNullOrWhiteSpace(targetState)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(targetState));
if (sourceState == targetState) throw new ArgumentException("Source and target state cannot be identical.");
if (migration == null) throw new ArgumentNullException(nameof(migration));
if (!migration.Implements()) throw new ArgumentException($"Type {migration.Name} does not implement IMigration.", nameof(migration));
@@ -135,10 +137,12 @@ namespace Umbraco.Core.Migrations
///
public MigrationPlan ToWithClone(string startState, string endState, string targetState)
{
- if (string.IsNullOrWhiteSpace(startState)) throw new ArgumentNullOrEmptyException(nameof(startState));
- if (string.IsNullOrWhiteSpace(endState)) throw new ArgumentNullOrEmptyException(nameof(endState));
- if (string.IsNullOrWhiteSpace(targetState)) throw new ArgumentNullOrEmptyException(nameof(targetState));
-
+ if (startState == null) throw new ArgumentNullException(nameof(startState));
+ if (string.IsNullOrWhiteSpace(startState)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(startState));
+ if (endState == null) throw new ArgumentNullException(nameof(endState));
+ if (string.IsNullOrWhiteSpace(endState)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(endState));
+ if (targetState == null) throw new ArgumentNullException(nameof(targetState));
+ if (string.IsNullOrWhiteSpace(targetState)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(targetState));
if (startState == endState) throw new ArgumentException("Start and end states cannot be identical.");
startState = startState.Trim();
@@ -317,7 +321,7 @@ namespace Umbraco.Core.Migrations
// throw a raw exception here: this should never happen as the plan has
// been validated - this is just a paranoid safety test
if (!_transitions.TryGetValue(origState, out transition))
- throw new Exception($"Unknown state \"{origState}\".");
+ throw new InvalidOperationException($"Unknown state \"{origState}\".");
}
// prepare and de-duplicate post-migrations, only keeping the 1st occurence
@@ -339,7 +343,7 @@ namespace Umbraco.Core.Migrations
// safety check - again, this should never happen as the plan has been validated,
// and this is just a paranoid safety test
if (origState != _finalState)
- throw new Exception($"Internal error, reached state {origState} which is not final state {_finalState}");
+ throw new InvalidOperationException($"Internal error, reached state {origState} which is not final state {_finalState}");
return origState;
}
@@ -358,7 +362,7 @@ namespace Umbraco.Core.Migrations
var states = new List { origState };
if (!_transitions.TryGetValue(origState, out var transition))
- throw new Exception($"Unknown state \"{origState}\".");
+ throw new InvalidOperationException($"Unknown state \"{origState}\".");
while (transition != null)
{
@@ -373,12 +377,12 @@ namespace Umbraco.Core.Migrations
}
if (!_transitions.TryGetValue(origState, out transition))
- throw new Exception($"Unknown state \"{origState}\".");
+ throw new InvalidOperationException($"Unknown state \"{origState}\".");
}
// safety check
if (origState != (toState ?? _finalState))
- throw new Exception($"Internal error, reached state {origState} which is not state {toState ?? _finalState}");
+ throw new InvalidOperationException($"Internal error, reached state {origState} which is not state {toState ?? _finalState}");
return states;
}
@@ -417,7 +421,7 @@ namespace Umbraco.Core.Migrations
public override string ToString()
{
return MigrationType == typeof(NoopMigration)
- ? $"{(SourceState == "" ? "" : SourceState)} --> {TargetState}"
+ ? $"{(SourceState == string.Empty ? "" : SourceState)} --> {TargetState}"
: $"{SourceState} -- ({MigrationType.FullName}) --> {TargetState}";
}
}
diff --git a/src/Umbraco.Core/Models/ContentBase.cs b/src/Umbraco.Core/Models/ContentBase.cs
index fbb68194b7..d02ea82012 100644
--- a/src/Umbraco.Core/Models/ContentBase.cs
+++ b/src/Umbraco.Core/Models/ContentBase.cs
@@ -4,8 +4,6 @@ using System.Collections.Specialized;
using System.Diagnostics;
using System.Linq;
using System.Runtime.Serialization;
-using Umbraco.Core.Composing;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Models.Entities;
namespace Umbraco.Core.Models
@@ -229,8 +227,8 @@ namespace Umbraco.Core.Models
private void ClearCultureInfo(string culture)
{
- if (culture.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
if (_cultureInfos == null) return;
_cultureInfos.Remove(culture);
diff --git a/src/Umbraco.Core/Models/ContentCultureInfos.cs b/src/Umbraco.Core/Models/ContentCultureInfos.cs
index c8c4bea56a..2f9c08b985 100644
--- a/src/Umbraco.Core/Models/ContentCultureInfos.cs
+++ b/src/Umbraco.Core/Models/ContentCultureInfos.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Models.Entities;
namespace Umbraco.Core.Models
@@ -18,7 +17,9 @@ namespace Umbraco.Core.Models
///
public ContentCultureInfos(string culture)
{
- if (culture.IsNullOrWhiteSpace()) throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
+
Culture = culture;
}
diff --git a/src/Umbraco.Core/Models/ContentCultureInfosCollection.cs b/src/Umbraco.Core/Models/ContentCultureInfosCollection.cs
index 52f6f9adb6..9bc78fc56d 100644
--- a/src/Umbraco.Core/Models/ContentCultureInfosCollection.cs
+++ b/src/Umbraco.Core/Models/ContentCultureInfosCollection.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Collections.Specialized;
using Umbraco.Core.Collections;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Models
{
@@ -23,7 +21,9 @@ namespace Umbraco.Core.Models
///
public void AddOrUpdate(string culture, string name, DateTime date)
{
- if (culture.IsNullOrWhiteSpace()) throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
+
culture = culture.ToLowerInvariant();
if (TryGetValue(culture, out var item))
diff --git a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
index f9efc60142..af8c781072 100644
--- a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
+++ b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Models
{
@@ -103,11 +102,11 @@ namespace Umbraco.Core.Models
public static void SetPublishInfo(this IContent content, string culture, string name, DateTime date)
{
- if (string.IsNullOrWhiteSpace(name))
- throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
- if (culture.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
content.PublishCultureInfos.AddOrUpdate(culture, name, date);
}
@@ -153,11 +152,11 @@ namespace Umbraco.Core.Models
public static void SetCultureInfo(this IContentBase content, string culture, string name, DateTime date)
{
- if (name.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
- if (culture.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
content.CultureInfos.AddOrUpdate(culture, name, date);
}
@@ -276,8 +275,8 @@ namespace Umbraco.Core.Models
///
public static bool ClearPublishInfo(this IContent content, string culture)
{
- if (culture.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(culture));
+ if (culture == null) throw new ArgumentNullException(nameof(culture));
+ if (string.IsNullOrWhiteSpace(culture)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(culture));
var removed = content.PublishCultureInfos.Remove(culture);
if (removed)
diff --git a/src/Umbraco.Core/Models/Entities/EntitySlim.cs b/src/Umbraco.Core/Models/Entities/EntitySlim.cs
index b095965056..b4b09b58c2 100644
--- a/src/Umbraco.Core/Models/Entities/EntitySlim.cs
+++ b/src/Umbraco.Core/Models/Entities/EntitySlim.cs
@@ -66,7 +66,7 @@ namespace Umbraco.Core.Models.Entities
public int ParentId { get; set; }
///
- public void SetParent(ITreeEntity parent) => throw new WontImplementException();
+ public void SetParent(ITreeEntity parent) => throw new InvalidOperationException("This property won't be implemented.");
///
[DataMember]
@@ -116,7 +116,7 @@ namespace Umbraco.Core.Models.Entities
///
public object DeepClone()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
#endregion
@@ -128,47 +128,47 @@ namespace Umbraco.Core.Models.Entities
public bool IsDirty()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public bool IsPropertyDirty(string propName)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public IEnumerable GetDirtyProperties()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public void ResetDirtyProperties()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public bool WasDirty()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public bool WasPropertyDirty(string propertyName)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public void ResetWereDirtyProperties()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public void ResetDirtyProperties(bool rememberDirty)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
public IEnumerable GetWereDirtyProperties()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
#endregion
diff --git a/src/Umbraco.Core/Models/Member.cs b/src/Umbraco.Core/Models/Member.cs
index b473a154f1..49e07a486d 100644
--- a/src/Umbraco.Core/Models/Member.cs
+++ b/src/Umbraco.Core/Models/Member.cs
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
using Umbraco.Core.Composing;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
namespace Umbraco.Core.Models
@@ -43,7 +42,8 @@ namespace Umbraco.Core.Models
public Member(string name, IMemberType contentType)
: base(name, -1, contentType, new PropertyCollection())
{
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
IsApproved = true;
@@ -63,9 +63,12 @@ namespace Umbraco.Core.Models
public Member(string name, string email, string username, IMemberType contentType, bool isApproved = true)
: base(name, -1, contentType, new PropertyCollection())
{
- if (string.IsNullOrWhiteSpace(email)) throw new ArgumentNullOrEmptyException(nameof(email));
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
- if (string.IsNullOrWhiteSpace(username)) throw new ArgumentNullOrEmptyException(nameof(username));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+ if (email == null) throw new ArgumentNullException(nameof(email));
+ if (string.IsNullOrWhiteSpace(email)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(email));
+ if (username == null) throw new ArgumentNullException(nameof(username));
+ if (string.IsNullOrWhiteSpace(username)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(username));
_email = email;
_username = username;
diff --git a/src/Umbraco.Core/Models/PublishedContent/ModelType.cs b/src/Umbraco.Core/Models/PublishedContent/ModelType.cs
index 318ccc916e..dd60eb9beb 100644
--- a/src/Umbraco.Core/Models/PublishedContent/ModelType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/ModelType.cs
@@ -20,7 +20,9 @@ namespace Umbraco.Core.Models.PublishedContent
{
private ModelType(string contentTypeAlias)
{
- if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(contentTypeAlias));
+ if (contentTypeAlias == null) throw new ArgumentNullException(nameof(contentTypeAlias));
+ if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(contentTypeAlias));
+
ContentTypeAlias = contentTypeAlias;
Name = "{" + ContentTypeAlias + "}";
}
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedCultureInfos.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedCultureInfos.cs
index d5096158a7..908b97fc36 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedCultureInfos.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedCultureInfos.cs
@@ -1,5 +1,4 @@
using System;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Models.PublishedContent
{
@@ -13,7 +12,8 @@ namespace Umbraco.Core.Models.PublishedContent
///
public PublishedCultureInfo(string culture, string name, string urlSegment, DateTime date)
{
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
Culture = culture ?? throw new ArgumentNullException(nameof(culture));
Name = name;
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedModelAttribute.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedModelAttribute.cs
index 16eb614ee7..3f2c63a78f 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedModelAttribute.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedModelAttribute.cs
@@ -1,5 +1,4 @@
using System;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Models.PublishedContent
{
@@ -19,7 +18,9 @@ namespace Umbraco.Core.Models.PublishedContent
/// The content type alias.
public PublishedModelAttribute(string contentTypeAlias)
{
- if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(contentTypeAlias));
+ if (contentTypeAlias == null) throw new ArgumentNullException(nameof(contentTypeAlias));
+ if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(contentTypeAlias));
+
ContentTypeAlias = contentTypeAlias;
}
diff --git a/src/Umbraco.Core/Models/RelationType.cs b/src/Umbraco.Core/Models/RelationType.cs
index 259b7bc4ef..725628bf90 100644
--- a/src/Umbraco.Core/Models/RelationType.cs
+++ b/src/Umbraco.Core/Models/RelationType.cs
@@ -1,6 +1,5 @@
using System;
using System.Runtime.Serialization;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Models.Entities;
namespace Umbraco.Core.Models
@@ -20,7 +19,9 @@ namespace Umbraco.Core.Models
public RelationType(Guid childObjectType, Guid parentObjectType, string alias)
{
- if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentNullOrEmptyException(nameof(alias));
+ if (alias == null) throw new ArgumentNullException(nameof(alias));
+ if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(alias));
+
_childObjectType = childObjectType;
_parentObjectType = parentObjectType;
_alias = alias;
@@ -30,7 +31,9 @@ namespace Umbraco.Core.Models
public RelationType(Guid childObjectType, Guid parentObjectType, string alias, string name)
: this(childObjectType, parentObjectType, alias)
{
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+
Name = name;
}
diff --git a/src/Umbraco.Core/Persistence/EntityNotFoundException.cs b/src/Umbraco.Core/Persistence/EntityNotFoundException.cs
index e0fe778fa6..ea6d5142f0 100644
--- a/src/Umbraco.Core/Persistence/EntityNotFoundException.cs
+++ b/src/Umbraco.Core/Persistence/EntityNotFoundException.cs
@@ -1,38 +1,96 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.Serialization;
namespace Umbraco.Core.Persistence
{
-
- // TODO: Would be good to use this exception type anytime we cannot find an entity
-
///
- /// An exception used to indicate that an umbraco entity could not be found
+ /// An exception used to indicate that an Umbraco entity could not be found.
///
+ ///
+ [Obsolete("Instead of throwing an exception, return null or an HTTP 404 status code instead.")]
+ [Serializable]
public class EntityNotFoundException : Exception
{
+ ///
+ /// Gets the identifier.
+ ///
+ ///
+ /// The identifier.
+ ///
+ ///
+ /// This object should be serializable to prevent a to be thrown.
+ ///
public object Id { get; private set; }
- private readonly string _msg;
- public EntityNotFoundException(object id, string msg)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public EntityNotFoundException()
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The identifier.
+ /// The message.
+ public EntityNotFoundException(object id, string message)
+ : base(message)
{
Id = id;
- _msg = msg;
}
- public EntityNotFoundException(string msg)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public EntityNotFoundException(string message)
+ : base(message)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public EntityNotFoundException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected EntityNotFoundException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
{
- _msg = msg;
+ Id = info.GetValue(nameof(Id), typeof(object));
}
- public override string Message
+ ///
+ /// When overridden in a derived class, sets the with information about the exception.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ /// info
+ public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
- get { return _msg; }
+ if (info == null)
+ {
+ throw new ArgumentNullException(nameof(info));
+ }
+
+ info.AddValue(nameof(Id), Id);
+
+ base.GetObjectData(info, context);
}
+ ///
+ /// Returns a that represents this instance.
+ ///
+ ///
+ /// A that represents this instance.
+ ///
public override string ToString()
{
var result = base.ToString();
diff --git a/src/Umbraco.Core/Persistence/FaultHandling/RetryLimitExceededException.cs b/src/Umbraco.Core/Persistence/FaultHandling/RetryLimitExceededException.cs
index c537281dc9..a1a0db2983 100644
--- a/src/Umbraco.Core/Persistence/FaultHandling/RetryLimitExceededException.cs
+++ b/src/Umbraco.Core/Persistence/FaultHandling/RetryLimitExceededException.cs
@@ -4,59 +4,51 @@ using System.Runtime.Serialization;
namespace Umbraco.Core.Persistence.FaultHandling
{
///
- /// The special type of exception that provides managed exit from a retry loop. The user code can use this
- /// exception to notify the retry policy that no further retry attempts are required.
+ /// The special type of exception that provides managed exit from a retry loop. The user code can use this exception to notify the retry policy that no further retry attempts are required.
///
+ ///
[Serializable]
public sealed class RetryLimitExceededException : Exception
{
///
- /// Initializes a new instance of the class with a default error message.
+ /// Initializes a new instance of the class with a default error message.
///
public RetryLimitExceededException()
- : this("RetryLimitExceeded")
- {
- }
+ : base()
+ { }
///
- /// Initializes a new instance of the class with a specified error message.
+ /// Initializes a new instance of the class with a specified error message.
///
/// The message that describes the error.
public RetryLimitExceededException(string message)
: base(message)
- {
- }
+ { }
///
- /// Initializes a new instance of the class with a reference to the inner exception
- /// that is the cause of this exception.
+ /// Initializes a new instance of the class with a reference to the inner exception that is the cause of this exception.
///
/// The exception that is the cause of the current exception.
public RetryLimitExceededException(Exception innerException)
- : base(innerException != null ? innerException.Message : "RetryLimitExceeded", innerException)
- {
- }
+ : base(null, innerException)
+ { }
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The message that describes the error.
/// The exception that is the cause of the current exception.
public RetryLimitExceededException(string message, Exception innerException)
: base(message, innerException)
- {
- }
+ { }
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
- /// The that holds the serialized object data about the exception being thrown.
- /// The that contains contextual information about the source or destination.
- /// The parameter is null.
- /// The class name is null or is zero (0).
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
private RetryLimitExceededException(SerializationInfo info, StreamingContext context)
: base(info, context)
- {
- }
+ { }
}
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs
index 2649b9993f..dd9c7c93e5 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs
@@ -924,32 +924,32 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override IEnumerable PerformGetByQuery(IQuery query)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable GetDeleteClauses()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override void PersistNewItem(IContent entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override void PersistUpdatedItem(IContent entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override Sql GetBaseQuery(bool isCount)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override string GetBaseWhereClause()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityContainerRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityContainerRepository.cs
index 09fe949df1..505cbfc816 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityContainerRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityContainerRepository.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using NPoco;
using Umbraco.Core.Cache;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
@@ -129,6 +128,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistDeletedItem(EntityContainer entity)
{
+ if (entity == null) throw new ArgumentNullException(nameof(entity));
EnsureContainerType(entity);
var nodeDto = Database.FirstOrDefault(Sql().SelectAll()
@@ -162,9 +162,11 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistNewItem(EntityContainer entity)
{
+ if (entity == null) throw new ArgumentNullException(nameof(entity));
EnsureContainerType(entity);
- if (string.IsNullOrWhiteSpace(entity.Name)) throw new ArgumentNullOrEmptyException("entity.Name");
+ if (entity.Name == null) throw new InvalidOperationException("Entity name can't be null.");
+ if (string.IsNullOrWhiteSpace(entity.Name)) throw new InvalidOperationException("Entity name can't be empty or consist only of white-space characters.");
entity.Name = entity.Name.Trim();
// guard against duplicates
@@ -184,7 +186,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
.Where(dto => dto.NodeId == entity.ParentId && dto.NodeObjectType == entity.ContainerObjectType));
if (parentDto == null)
- throw new NullReferenceException("Could not find parent container with id " + entity.ParentId);
+ throw new InvalidOperationException("Could not find parent container with id " + entity.ParentId);
level = parentDto.Level;
path = parentDto.Path;
@@ -223,10 +225,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
//
protected override void PersistUpdatedItem(EntityContainer entity)
{
+ if (entity == null) throw new ArgumentNullException(nameof(entity));
EnsureContainerType(entity);
+ if (entity.Name == null) throw new InvalidOperationException("Entity name can't be null.");
+ if (string.IsNullOrWhiteSpace(entity.Name)) throw new InvalidOperationException("Entity name can't be empty or consist only of white-space characters.");
entity.Name = entity.Name.Trim();
- if (string.IsNullOrWhiteSpace(entity.Name)) throw new ArgumentNullOrEmptyException("entity.Name");
// find container to update
var nodeDto = Database.FirstOrDefault(Sql().SelectAll()
@@ -255,7 +259,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
.Where(dto => dto.NodeId == entity.ParentId && dto.NodeObjectType == entity.ContainerObjectType));
if (parent == null)
- throw new NullReferenceException("Could not find parent container with id " + entity.ParentId);
+ throw new InvalidOperationException("Could not find parent container with id " + entity.ParentId);
nodeDto.Level = Convert.ToInt16(parent.Level + 1);
nodeDto.Path = parent.Path + "," + nodeDto.NodeId;
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs
index 25828b8126..3947773a76 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs
@@ -425,32 +425,32 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override IEnumerable PerformGetByQuery(IQuery query)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable GetDeleteClauses()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override void PersistNewItem(IMedia entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override void PersistUpdatedItem(IMedia entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override Sql GetBaseQuery(bool isCount)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override string GetBaseWhereClause()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PermissionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PermissionRepository.cs
index b4fd86c567..259f0b89c0 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/PermissionRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PermissionRepository.cs
@@ -252,27 +252,27 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override ContentPermissionSet PerformGet(int id)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable PerformGetAll(params int[] ids)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable PerformGetByQuery(IQuery query)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override Sql GetBaseQuery(bool isCount)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override string GetBaseWhereClause()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable GetDeleteClauses()
@@ -280,11 +280,11 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
return new List();
}
- protected override Guid NodeObjectTypeId => throw new WontImplementException();
+ protected override Guid NodeObjectTypeId => throw new InvalidOperationException("This property won't be implemented.");
protected override void PersistDeletedItem(ContentPermissionSet entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
#endregion
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/SimpleGetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/SimpleGetRepository.cs
index 43233d0f31..f7e59820c3 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/SimpleGetRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/SimpleGetRepository.cs
@@ -75,19 +75,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected sealed override IEnumerable GetDeleteClauses()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
- protected sealed override Guid NodeObjectTypeId => throw new WontImplementException();
+ protected sealed override Guid NodeObjectTypeId => throw new InvalidOperationException("This property won't be implemented.");
protected sealed override void PersistNewItem(TEntity entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected sealed override void PersistUpdatedItem(TEntity entity)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
#endregion
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs
index 0701a0996e..0a66e29147 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs
@@ -286,7 +286,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
return list;
}
- protected override Guid NodeObjectTypeId => throw new WontImplementException();
+ protected override Guid NodeObjectTypeId => throw new InvalidOperationException("This property won't be implemented.");
protected override void PersistNewItem(IUserGroup entity)
{
@@ -370,35 +370,35 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override UserGroupWithUsers PerformGet(int id)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable PerformGetAll(params int[] ids)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable PerformGetByQuery(IQuery query)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override Sql GetBaseQuery(bool isCount)
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override string GetBaseWhereClause()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
protected override IEnumerable GetDeleteClauses()
{
- throw new WontImplementException();
+ throw new InvalidOperationException("This method won't be implemented.");
}
- protected override Guid NodeObjectTypeId => throw new WontImplementException();
+ protected override Guid NodeObjectTypeId => throw new InvalidOperationException("This property won't be implemented.");
#endregion
diff --git a/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs b/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
index 13422f43b1..c502abc87c 100644
--- a/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
+++ b/src/Umbraco.Core/Persistence/UmbracoDatabaseFactory.cs
@@ -4,7 +4,6 @@ using System.Data.Common;
using System.Threading;
using NPoco;
using NPoco.FluentMappings;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence.FaultHandling;
using Umbraco.Core.Persistence.Mappers;
@@ -61,8 +60,8 @@ namespace Umbraco.Core.Persistence
/// Used by the other ctor and in tests.
public UmbracoDatabaseFactory(string connectionStringName, ILogger logger, Lazy mappers)
{
- if (string.IsNullOrWhiteSpace(connectionStringName))
- throw new ArgumentNullOrEmptyException(nameof(connectionStringName));
+ if (connectionStringName == null) throw new ArgumentNullException(nameof(connectionStringName));
+ if (string.IsNullOrWhiteSpace(connectionStringName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(connectionStringName));
_mappers = mappers ?? throw new ArgumentNullException(nameof(mappers));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
diff --git a/src/Umbraco.Core/PropertyEditors/ConfigurationFieldAttribute.cs b/src/Umbraco.Core/PropertyEditors/ConfigurationFieldAttribute.cs
index d90aeef2e6..1852c742f0 100644
--- a/src/Umbraco.Core/PropertyEditors/ConfigurationFieldAttribute.cs
+++ b/src/Umbraco.Core/PropertyEditors/ConfigurationFieldAttribute.cs
@@ -1,5 +1,4 @@
using System;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.PropertyEditors
{
@@ -28,13 +27,15 @@ namespace Umbraco.Core.PropertyEditors
/// The view to use to render the field editor.
public ConfigurationFieldAttribute(string key, string name, string view)
{
- if (string.IsNullOrWhiteSpace(key)) throw new ArgumentNullOrEmptyException(nameof(key));
+ if (key == null) throw new ArgumentNullException(nameof(key));
+ if (string.IsNullOrWhiteSpace(key)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(key));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+ if (view == null) throw new ArgumentNullException(nameof(view));
+ if (string.IsNullOrWhiteSpace(view)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(view));
+
Key = key;
-
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
Name = name;
-
- if (string.IsNullOrWhiteSpace(view)) throw new ArgumentNullOrEmptyException(nameof(view));
View = view;
}
@@ -47,10 +48,12 @@ namespace Umbraco.Core.PropertyEditors
/// from the name of the property marked with this attribute.
public ConfigurationFieldAttribute(string name, string view)
{
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
- Name = name;
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+ if (view == null) throw new ArgumentNullException(nameof(view));
+ if (string.IsNullOrWhiteSpace(view)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(view));
- if (string.IsNullOrWhiteSpace(view)) throw new ArgumentNullOrEmptyException(nameof(view));
+ Name = name;
View = view;
}
diff --git a/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs b/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
index 821f06513e..7b3be7ea5f 100644
--- a/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
+++ b/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
@@ -1,5 +1,4 @@
using System;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.PropertyEditors
{
@@ -53,17 +52,17 @@ namespace Umbraco.Core.PropertyEditors
///
public DataEditorAttribute(string alias, EditorType type, string name, string view)
{
- if ((type & ~(EditorType.PropertyValue | EditorType.MacroParameter)) > 0)
- throw new ArgumentOutOfRangeException(nameof(type), $"Not a valid {typeof(EditorType)} value.");
+ if (alias == null) throw new ArgumentNullException(nameof(alias));
+ if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(alias));
+ if ((type & ~(EditorType.PropertyValue | EditorType.MacroParameter)) > 0) throw new ArgumentOutOfRangeException(nameof(type), type, $"Not a valid {typeof(EditorType)} value.");
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
+ if (view == null) throw new ArgumentNullException(nameof(view));
+ if (string.IsNullOrWhiteSpace(view)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(view));
+
Type = type;
-
- if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentNullOrEmptyException(nameof(alias));
Alias = alias;
-
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
Name = name;
-
- if (string.IsNullOrWhiteSpace(view)) throw new ArgumentNullOrEmptyException(nameof(view));
View = view == NullView ? null : view;
}
@@ -100,8 +99,10 @@ namespace Umbraco.Core.PropertyEditors
get => _valueType;
set
{
- if (string.IsNullOrWhiteSpace(value)) throw new ArgumentNullOrEmptyException(nameof(value));
- if (!ValueTypes.IsValue(value)) throw new ArgumentOutOfRangeException(nameof(value), $"Not a valid {typeof(ValueTypes)} value.");
+ if (value == null) throw new ArgumentNullException(nameof(value));
+ if (string.IsNullOrWhiteSpace(value)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(value));
+ if (!ValueTypes.IsValue(value)) throw new ArgumentOutOfRangeException(nameof(value), value, $"Not a valid {typeof(ValueTypes)} value.");
+
_valueType = value;
}
}
diff --git a/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs b/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs
index e405fa3a3e..bc1572445e 100644
--- a/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs
+++ b/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
using Umbraco.Core.Composing;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Services;
namespace Umbraco.Core.PropertyEditors.Validators
@@ -48,8 +47,9 @@ namespace Umbraco.Core.PropertyEditors.Validators
get => _regex;
set
{
- if (string.IsNullOrWhiteSpace(value))
- throw new ArgumentNullOrEmptyException(nameof(value));
+ if (value == null) throw new ArgumentNullException(nameof(value));
+ if (string.IsNullOrWhiteSpace(value)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(value));
+
_regex = value;
}
}
@@ -66,7 +66,9 @@ namespace Umbraco.Core.PropertyEditors.Validators
///
public IEnumerable ValidateFormat(object value, string valueType, string format)
{
- if (string.IsNullOrWhiteSpace(format)) throw new ArgumentNullOrEmptyException(nameof(format));
+ if (format == null) throw new ArgumentNullException(nameof(format));
+ if (string.IsNullOrWhiteSpace(format)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(format));
+
if (value == null || !new Regex(format).IsMatch(value.ToString()))
yield return new ValidationResult(_textService.Localize("validation", "invalidPattern"), new[] { "value" });
}
diff --git a/src/Umbraco.Core/ReflectionUtilities.cs b/src/Umbraco.Core/ReflectionUtilities.cs
index 622d81f5f2..a8e6836ca1 100644
--- a/src/Umbraco.Core/ReflectionUtilities.cs
+++ b/src/Umbraco.Core/ReflectionUtilities.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core
{
@@ -29,10 +28,14 @@ namespace Umbraco.Core
/// The declaring type.
/// The field type.
/// The name of the field.
- /// A field getter function.
- /// Occurs when is null or empty.
- /// Occurs when the field does not exist.
- /// Occurs when does not match the type of the field.
+ ///
+ /// A field getter function.
+ ///
+ /// fieldName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match field . type.
+ /// Could not find field ..
public static Func EmitFieldGetter(string fieldName)
{
var field = GetField(fieldName);
@@ -45,10 +48,14 @@ namespace Umbraco.Core
/// The declaring type.
/// The field type.
/// The name of the field.
- /// A field setter action.
- /// Occurs when is null or empty.
- /// Occurs when the field does not exist.
- /// Occurs when does not match the type of the field.
+ ///
+ /// A field setter action.
+ ///
+ /// fieldName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match field . type.
+ /// Could not find field ..
public static Action EmitFieldSetter(string fieldName)
{
var field = GetField(fieldName);
@@ -61,19 +68,36 @@ namespace Umbraco.Core
/// The declaring type.
/// The field type.
/// The name of the field.
- /// A field getter and setter functions.
- /// Occurs when is null or empty.
- /// Occurs when the field does not exist.
- /// Occurs when does not match the type of the field.
+ ///
+ /// A field getter and setter functions.
+ ///
+ /// fieldName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match field . type.
+ /// Could not find field ..
public static (Func, Action) EmitFieldGetterAndSetter(string fieldName)
{
var field = GetField(fieldName);
return (EmitFieldGetter(field), EmitFieldSetter(field));
}
+ ///
+ /// Gets the field.
+ ///
+ /// The type of the declaring.
+ /// The type of the value.
+ /// Name of the field.
+ ///
+ /// fieldName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match field . type.
+ /// Could not find field ..
private static FieldInfo GetField(string fieldName)
{
- if (string.IsNullOrWhiteSpace(fieldName)) throw new ArgumentNullOrEmptyException(nameof(fieldName));
+ if (fieldName == null) throw new ArgumentNullException(nameof(fieldName));
+ if (string.IsNullOrWhiteSpace(fieldName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(fieldName));
// get the field
var field = typeof(TDeclaring).GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
@@ -120,13 +144,18 @@ namespace Umbraco.Core
/// The property type.
/// The name of the property.
/// A value indicating whether the property and its getter must exist.
- /// A property getter function. If is false, returns null when the property or its getter does not exist.
- /// Occurs when is null or empty.
- /// Occurs when the property or its getter does not exist.
- /// Occurs when does not match the type of the property.
+ ///
+ /// A property getter function. If is false, returns null when the property or its getter does not exist.
+ ///
+ /// propertyName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match property . type.
+ /// Could not find property getter for ..
public static Func EmitPropertyGetter(string propertyName, bool mustExist = true)
{
- if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentNullOrEmptyException(nameof(propertyName));
+ if (propertyName == null) throw new ArgumentNullException(nameof(propertyName));
+ if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyName));
var property = typeof(TDeclaring).GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
@@ -146,13 +175,18 @@ namespace Umbraco.Core
/// The property type.
/// The name of the property.
/// A value indicating whether the property and its setter must exist.
- /// A property setter function. If is false, returns null when the property or its setter does not exist.
- /// Occurs when is null or empty.
- /// Occurs when the property or its setter does not exist.
- /// Occurs when does not match the type of the property.
+ ///
+ /// A property setter function. If is false, returns null when the property or its setter does not exist.
+ ///
+ /// propertyName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match property . type.
+ /// Could not find property setter for ..
public static Action EmitPropertySetter(string propertyName, bool mustExist = true)
{
- if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentNullOrEmptyException(nameof(propertyName));
+ if (propertyName == null) throw new ArgumentNullException(nameof(propertyName));
+ if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyName));
var property = typeof(TDeclaring).GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
@@ -172,13 +206,18 @@ namespace Umbraco.Core
/// The property type.
/// The name of the property.
/// A value indicating whether the property and its getter and setter must exist.
- /// A property getter and setter functions. If is false, returns null when the property or its getter or setter does not exist.
- /// Occurs when is null or empty.
- /// Occurs when the property or its getter or setter does not exist.
- /// Occurs when does not match the type of the property.
+ ///
+ /// A property getter and setter functions. If is false, returns null when the property or its getter or setter does not exist.
+ ///
+ /// propertyName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Value type does not match property . type.
+ /// Could not find property getter and setter for ..
public static (Func, Action) EmitPropertyGetterAndSetter(string propertyName, bool mustExist = true)
{
- if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentNullOrEmptyException(nameof(propertyName));
+ if (propertyName == null) throw new ArgumentNullException(nameof(propertyName));
+ if (string.IsNullOrWhiteSpace(propertyName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyName));
var property = typeof(TDeclaring).GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
@@ -402,13 +441,17 @@ namespace Umbraco.Core
/// A lambda representing the method.
/// The name of the method.
/// A value indicating whether the constructor must exist.
- /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// methodName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Occurs when does not match the method signature..
+ /// Occurs when no proper method with name could be found.
///
- /// The method arguments are determined by generic arguments.
+ /// The method arguments are determined by generic arguments.
///
- /// Occurs when is null or empty.
- /// Occurs when no proper method with name could be found.
- /// Occurs when Occurs when does not match the method signature.
public static TLambda EmitMethod(string methodName, bool mustExist = true)
{
return EmitMethod(typeof(TDeclaring), methodName, mustExist);
@@ -421,16 +464,21 @@ namespace Umbraco.Core
/// The declaring type.
/// The name of the method.
/// A value indicating whether the constructor must exist.
- /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// methodName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Occurs when does not match the method signature..
+ /// Occurs when no proper method with name could be found.
///
- /// The method arguments are determined by generic arguments.
+ /// The method arguments are determined by generic arguments.
///
- /// Occurs when is null or empty.
- /// Occurs when no proper method with name could be found.
- /// Occurs when Occurs when does not match the method signature.
public static TLambda EmitMethod(Type declaring, string methodName, bool mustExist = true)
{
- if (string.IsNullOrWhiteSpace(methodName)) throw new ArgumentNullOrEmptyException(nameof(methodName));
+ if (methodName == null) throw new ArgumentNullException(nameof(methodName));
+ if (string.IsNullOrWhiteSpace(methodName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(methodName));
var (lambdaDeclaring, lambdaParameters, lambdaReturned) = AnalyzeLambda(true, out var isFunction);
@@ -510,17 +558,21 @@ namespace Umbraco.Core
/// A lambda representing the method.
/// The name of the method.
/// A value indicating whether the constructor must exist.
- /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// The method. If is false, returns null when the method does not exist.
+ ///
+ /// methodName
+ /// Value can't be empty or consist only of white-space characters. -
+ /// or
+ /// Occurs when does not match the method signature..
+ /// Occurs when no proper method with name could be found.
///
- /// The method arguments are determined by generic arguments.
+ /// The method arguments are determined by generic arguments.
///
- /// Occurs when is null or empty.
- /// Occurs when no proper method with name could be found.
- /// Occurs when Occurs when does not match the method signature.
public static TLambda EmitMethod(string methodName, bool mustExist = true)
{
- if (string.IsNullOrWhiteSpace(methodName))
- throw new ArgumentNullOrEmptyException(nameof(methodName));
+ if (methodName == null) throw new ArgumentNullException(nameof(methodName));
+ if (string.IsNullOrWhiteSpace(methodName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(methodName));
// validate lambda type
var (lambdaDeclaring, lambdaParameters, lambdaReturned) = AnalyzeLambda(false, out var isFunction);
diff --git a/src/Umbraco.Core/Security/BackOfficeUserStore.cs b/src/Umbraco.Core/Security/BackOfficeUserStore.cs
index 085a7b7a5b..dc271452e1 100644
--- a/src/Umbraco.Core/Security/BackOfficeUserStore.cs
+++ b/src/Umbraco.Core/Security/BackOfficeUserStore.cs
@@ -6,7 +6,6 @@ using System.Threading.Tasks;
using System.Web.Security;
using Microsoft.AspNet.Identity;
using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Identity;
@@ -217,7 +216,8 @@ namespace Umbraco.Core.Security
{
ThrowIfDisposed();
if (user == null) throw new ArgumentNullException(nameof(user));
- if (string.IsNullOrEmpty(passwordHash)) throw new ArgumentNullOrEmptyException(nameof(passwordHash));
+ if (passwordHash == null) throw new ArgumentNullException(nameof(passwordHash));
+ if (string.IsNullOrEmpty(passwordHash)) throw new ArgumentException("Value can't be empty.", nameof(passwordHash));
user.PasswordHash = passwordHash;
@@ -329,7 +329,7 @@ namespace Umbraco.Core.Security
{
ThrowIfDisposed();
if (user == null) throw new ArgumentNullException(nameof(user));
- if (login == null) throw new ArgumentNullException("login");
+ if (login == null) throw new ArgumentNullException(nameof(login));
var logins = user.Logins;
var instance = new IdentityUserLogin(login.LoginProvider, login.ProviderKey, user.Id);
@@ -348,7 +348,7 @@ namespace Umbraco.Core.Security
{
ThrowIfDisposed();
if (user == null) throw new ArgumentNullException(nameof(user));
- if (login == null) throw new ArgumentNullException("login");
+ if (login == null) throw new ArgumentNullException(nameof(login));
var provider = login.LoginProvider;
var key = login.ProviderKey;
@@ -379,7 +379,7 @@ namespace Umbraco.Core.Security
public Task FindAsync(UserLoginInfo login)
{
ThrowIfDisposed();
- if (login == null) throw new ArgumentNullException("login");
+ if (login == null) throw new ArgumentNullException(nameof(login));
//get all logins associated with the login id
var result = _externalLoginService.Find(login).ToArray();
@@ -413,7 +413,8 @@ namespace Umbraco.Core.Security
{
ThrowIfDisposed();
if (user == null) throw new ArgumentNullException(nameof(user));
- if (string.IsNullOrWhiteSpace(roleName)) throw new ArgumentException("Value cannot be null or whitespace.", "roleName");
+ if (roleName == null) throw new ArgumentNullException(nameof(roleName));
+ if (string.IsNullOrWhiteSpace(roleName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(roleName));
var userRole = user.Roles.SingleOrDefault(r => r.RoleId == roleName);
@@ -434,7 +435,8 @@ namespace Umbraco.Core.Security
{
ThrowIfDisposed();
if (user == null) throw new ArgumentNullException(nameof(user));
- if (string.IsNullOrWhiteSpace(roleName)) throw new ArgumentException("Value cannot be null or whitespace.", "roleName");
+ if (roleName == null) throw new ArgumentNullException(nameof(roleName));
+ if (string.IsNullOrWhiteSpace(roleName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(roleName));
var userRole = user.Roles.SingleOrDefault(r => r.RoleId == roleName);
diff --git a/src/Umbraco.Core/Services/Implement/ContentService.cs b/src/Umbraco.Core/Services/Implement/ContentService.cs
index 738b487cfd..1558b0170b 100644
--- a/src/Umbraco.Core/Services/Implement/ContentService.cs
+++ b/src/Umbraco.Core/Services/Implement/ContentService.cs
@@ -2885,7 +2885,8 @@ namespace Umbraco.Core.Services.Implement
private IContentType GetContentType(IScope scope, string contentTypeAlias)
{
- if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(contentTypeAlias));
+ if (contentTypeAlias == null) throw new ArgumentNullException(nameof(contentTypeAlias));
+ if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(contentTypeAlias));
scope.ReadLock(Constants.Locks.ContentTypes);
@@ -2900,7 +2901,8 @@ namespace Umbraco.Core.Services.Implement
private IContentType GetContentType(string contentTypeAlias)
{
- if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(contentTypeAlias));
+ if (contentTypeAlias == null) throw new ArgumentNullException(nameof(contentTypeAlias));
+ if (string.IsNullOrWhiteSpace(contentTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(contentTypeAlias));
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
diff --git a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
index 705a876d83..7ae330f8f1 100644
--- a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
+++ b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
@@ -595,10 +595,9 @@ namespace Umbraco.Core.Services.Implement
public TItem Copy(TItem original, string alias, string name, TItem parent)
{
if (original == null) throw new ArgumentNullException(nameof(original));
- if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentNullOrEmptyException(nameof(alias));
-
- if (parent != null && parent.HasIdentity == false)
- throw new InvalidOperationException("Parent must have an identity.");
+ if (alias == null) throw new ArgumentNullException(nameof(alias));
+ if (string.IsNullOrWhiteSpace(alias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(alias));
+ if (parent != null && parent.HasIdentity == false) throw new InvalidOperationException("Parent must have an identity.");
// this is illegal
//var originalb = (ContentTypeCompositionBase)original;
diff --git a/src/Umbraco.Core/Services/Implement/MediaService.cs b/src/Umbraco.Core/Services/Implement/MediaService.cs
index e9fdedbf33..528d0a0bf9 100644
--- a/src/Umbraco.Core/Services/Implement/MediaService.cs
+++ b/src/Umbraco.Core/Services/Implement/MediaService.cs
@@ -5,7 +5,6 @@ using System.Globalization;
using System.IO;
using System.Linq;
using Umbraco.Core.Events;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
@@ -1340,7 +1339,8 @@ namespace Umbraco.Core.Services.Implement
private IMediaType GetMediaType(string mediaTypeAlias)
{
- if (string.IsNullOrWhiteSpace(mediaTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(mediaTypeAlias));
+ if (mediaTypeAlias == null) throw new ArgumentNullException(nameof(mediaTypeAlias));
+ if (string.IsNullOrWhiteSpace(mediaTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(mediaTypeAlias));
using (var scope = ScopeProvider.CreateScope())
{
@@ -1350,7 +1350,7 @@ namespace Umbraco.Core.Services.Implement
var mediaType = _mediaTypeRepository.Get(query).FirstOrDefault();
if (mediaType == null)
- throw new Exception($"No MediaType matching the passed in Alias: '{mediaTypeAlias}' was found"); // causes rollback // causes rollback
+ throw new InvalidOperationException($"No media type matched the specified alias '{mediaTypeAlias}'.");
scope.Complete();
return mediaType;
diff --git a/src/Umbraco.Core/Services/Implement/MemberService.cs b/src/Umbraco.Core/Services/Implement/MemberService.cs
index 280241e342..a64e30495b 100644
--- a/src/Umbraco.Core/Services/Implement/MemberService.cs
+++ b/src/Umbraco.Core/Services/Implement/MemberService.cs
@@ -1344,7 +1344,8 @@ namespace Umbraco.Core.Services.Implement
private IMemberType GetMemberType(IScope scope, string memberTypeAlias)
{
- if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(memberTypeAlias));
+ if (memberTypeAlias == null) throw new ArgumentNullException(nameof(memberTypeAlias));
+ if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias));
scope.ReadLock(Constants.Locks.MemberTypes);
@@ -1358,7 +1359,8 @@ namespace Umbraco.Core.Services.Implement
private IMemberType GetMemberType(string memberTypeAlias)
{
- if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentNullOrEmptyException(nameof(memberTypeAlias));
+ if (memberTypeAlias == null) throw new ArgumentNullException(nameof(memberTypeAlias));
+ if (string.IsNullOrWhiteSpace(memberTypeAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(memberTypeAlias));
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
{
diff --git a/src/Umbraco.Core/Services/Implement/UserService.cs b/src/Umbraco.Core/Services/Implement/UserService.cs
index 0ea77dedcc..363bc72bc3 100644
--- a/src/Umbraco.Core/Services/Implement/UserService.cs
+++ b/src/Umbraco.Core/Services/Implement/UserService.cs
@@ -1,15 +1,11 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Data.Common;
-using System.Data.SqlClient;
-using System.Data.SqlServerCe;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using Umbraco.Core.Configuration;
using Umbraco.Core.Events;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
@@ -17,7 +13,6 @@ using Umbraco.Core.Persistence.Querying;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.Repositories.Implement;
using Umbraco.Core.Scoping;
-using Umbraco.Core.Security;
namespace Umbraco.Core.Services.Implement
{
@@ -107,7 +102,8 @@ namespace Umbraco.Core.Services.Implement
///
private IUser CreateUserWithIdentity(string username, string email, string passwordValue, bool isApproved = true)
{
- if (string.IsNullOrWhiteSpace(username)) throw new ArgumentNullOrEmptyException(nameof(username));
+ if (username == null) throw new ArgumentNullException(nameof(username));
+ if (string.IsNullOrWhiteSpace(username)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(username));
// TODO: PUT lock here!!
diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs
index 9bb61c7f2e..4451fdbba7 100644
--- a/src/Umbraco.Core/StringExtensions.cs
+++ b/src/Umbraco.Core/StringExtensions.cs
@@ -10,9 +10,7 @@ using System.Text;
using System.Text.RegularExpressions;
using System.Web.Security;
using Newtonsoft.Json;
-using Umbraco.Core.Configuration;
using Umbraco.Core.Composing;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Strings;
@@ -1091,7 +1089,8 @@ namespace Umbraco.Core
/// The safe url segment.
public static string ToUrlSegment(this string text)
{
- if (string.IsNullOrWhiteSpace(text)) throw new ArgumentNullOrEmptyException(nameof(text));
+ if (text == null) throw new ArgumentNullException(nameof(text));
+ if (string.IsNullOrWhiteSpace(text)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(text));
return Current.ShortStringHelper.CleanStringForUrlSegment(text);
}
@@ -1104,7 +1103,8 @@ namespace Umbraco.Core
/// The safe url segment.
public static string ToUrlSegment(this string text, string culture)
{
- if (string.IsNullOrWhiteSpace(text)) throw new ArgumentNullOrEmptyException(nameof(text));
+ if (text == null) throw new ArgumentNullException(nameof(text));
+ if (string.IsNullOrWhiteSpace(text)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(text));
return Current.ShortStringHelper.CleanStringForUrlSegment(text, culture);
}
diff --git a/src/Umbraco.Core/Xml/UmbracoXPathPathSyntaxParser.cs b/src/Umbraco.Core/Xml/UmbracoXPathPathSyntaxParser.cs
index b31fa6a8df..24fb070663 100644
--- a/src/Umbraco.Core/Xml/UmbracoXPathPathSyntaxParser.cs
+++ b/src/Umbraco.Core/Xml/UmbracoXPathPathSyntaxParser.cs
@@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Xml
{
@@ -37,7 +34,8 @@ namespace Umbraco.Core.Xml
// allowed 'inline', not just at the beginning... whether or not we want to support that is up
// for discussion.
- if (string.IsNullOrWhiteSpace(xpathExpression)) throw new ArgumentNullOrEmptyException(nameof(xpathExpression));
+ if (xpathExpression == null) throw new ArgumentNullException(nameof(xpathExpression));
+ if (string.IsNullOrWhiteSpace(xpathExpression)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(xpathExpression));
if (getPath == null) throw new ArgumentNullException(nameof(getPath));
if (publishedContentExists == null) throw new ArgumentNullException(nameof(publishedContentExists));
diff --git a/src/Umbraco.Core/Xml/XmlHelper.cs b/src/Umbraco.Core/Xml/XmlHelper.cs
index 3fd8dcaea5..2dd955086d 100644
--- a/src/Umbraco.Core/Xml/XmlHelper.cs
+++ b/src/Umbraco.Core/Xml/XmlHelper.cs
@@ -4,9 +4,7 @@ using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml;
-using System.Xml.Linq;
using System.Xml.XPath;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
namespace Umbraco.Core.Xml
@@ -25,9 +23,10 @@ namespace Umbraco.Core.Xml
///
public static void SetAttribute(XmlDocument xml, XmlNode n, string name, string value)
{
- if (xml == null) throw new ArgumentNullException("xml");
- if (n == null) throw new ArgumentNullException("n");
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xml == null) throw new ArgumentNullException(nameof(xml));
+ if (n == null) throw new ArgumentNullException(nameof(n));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
if (n.Attributes == null)
{
@@ -229,8 +228,9 @@ namespace Umbraco.Core.Xml
/// a XmlAttribute
public static XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
{
- if (xd == null) throw new ArgumentNullException("xd");
- if (string.IsNullOrEmpty(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xd == null) throw new ArgumentNullException(nameof(xd));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var temp = xd.CreateAttribute(name);
temp.Value = value;
@@ -246,8 +246,9 @@ namespace Umbraco.Core.Xml
/// a XmlNode
public static XmlNode AddTextNode(XmlDocument xd, string name, string value)
{
- if (xd == null) throw new ArgumentNullException("xd");
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xd == null) throw new ArgumentNullException(nameof(xd));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var temp = xd.CreateNode(XmlNodeType.Element, name, "");
temp.AppendChild(xd.CreateTextNode(value));
@@ -264,9 +265,10 @@ namespace Umbraco.Core.Xml
/// a XmlNode
public static XmlNode SetTextNode(XmlDocument xd, XmlNode parent, string name, string value)
{
- if (xd == null) throw new ArgumentNullException("xd");
- if (parent == null) throw new ArgumentNullException("parent");
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xd == null) throw new ArgumentNullException(nameof(xd));
+ if (parent == null) throw new ArgumentNullException(nameof(parent));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var child = parent.SelectSingleNode(name);
if (child != null)
@@ -289,7 +291,8 @@ namespace Umbraco.Core.Xml
{
if (xd == null) throw new ArgumentNullException(nameof(xd));
if (parent == null) throw new ArgumentNullException(nameof(parent));
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value cannot be null or whitespace.", nameof(name));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var child = parent.SelectSingleNode(name) ?? xd.CreateNode(XmlNodeType.Element, name, "");
child.InnerXml = value;
@@ -305,8 +308,9 @@ namespace Umbraco.Core.Xml
/// A XmlNode
public static XmlNode AddCDataNode(XmlDocument xd, string name, string value)
{
- if (xd == null) throw new ArgumentNullException("xd");
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xd == null) throw new ArgumentNullException(nameof(xd));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var temp = xd.CreateNode(XmlNodeType.Element, name, "");
temp.AppendChild(xd.CreateCDataSection(value));
@@ -323,9 +327,10 @@ namespace Umbraco.Core.Xml
/// a XmlNode
public static XmlNode SetCDataNode(XmlDocument xd, XmlNode parent, string name, string value)
{
- if (xd == null) throw new ArgumentNullException("xd");
- if (parent == null) throw new ArgumentNullException("parent");
- if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullOrEmptyException(nameof(name));
+ if (xd == null) throw new ArgumentNullException(nameof(xd));
+ if (parent == null) throw new ArgumentNullException(nameof(parent));
+ if (name == null) throw new ArgumentNullException(nameof(name));
+ if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(name));
var child = parent.SelectSingleNode(name);
if (child != null)
diff --git a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
index ab9b2cf73d..7c3c106724 100644
--- a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
+++ b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
@@ -101,7 +101,7 @@ namespace Umbraco.Tests.IO
Assert.AreEqual(Path.Combine(basePath, @"foo\bar.tmp"), path);
// that path is invalid as it would be outside the root directory
- Assert.Throws(() => _fileSystem.GetFullPath("../../foo.tmp"));
+ Assert.Throws(() => _fileSystem.GetFullPath("../../foo.tmp"));
// a very long path, which ends up being very long, works
path = Repeat("bah/bah/", 50);
diff --git a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
index 31b00e5cf8..343994b03a 100644
--- a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
+++ b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
@@ -238,7 +238,7 @@ namespace Umbraco.Tests.IO
var sfs = new PhysicalFileSystem(path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
ss.AddFile("../../f1.txt", ms);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
index 9c326b3ddc..dad2a0ea17 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
@@ -7,6 +7,7 @@ using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Persistence.Repositories.Implement;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing;
+using System;
namespace Umbraco.Tests.Persistence.Repositories
{
@@ -77,7 +78,7 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.AreEqual("/Views/Partials/path-2/test-path-3.cshtml", partialView.VirtualPath);
partialView = new PartialView(PartialViewType.PartialView, "\\test-path-4.cshtml") { Content = "// partialView" };
- Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
+ Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
{
repository.Save(partialView);
});
@@ -86,11 +87,11 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.IsNull(partialView);
// fixed in 7.3 - 7.2.8 used to...
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
partialView = (PartialView) repository.Get("\\test-path-4.cshtml"); // outside the filesystem, does not exist
});
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
partialView = (PartialView) repository.Get("../../packages.config"); // outside the filesystem, exists
});
diff --git a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
index 36c1bbdfb4..e3c316cad0 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
@@ -1,4 +1,5 @@
-using System.IO;
+using System;
+using System.IO;
using System.Linq;
using System.Text;
using Moq;
@@ -301,7 +302,7 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.AreEqual("/scripts/path-2/test-path-3.js", script.VirtualPath);
script = new Script("\\test-path-4.js") { Content = "// script" };
- Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
+ Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
{
repository.Save(script);
});
@@ -310,11 +311,11 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.IsNull(script);
// fixed in 7.3 - 7.2.8 used to...
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
script = repository.Get("\\test-path-4.js"); // outside the filesystem, does not exist
});
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
script = repository.Get("../packages.config"); // outside the filesystem, exists
});
diff --git a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
index 6fae1d4749..f427f22796 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
@@ -1,4 +1,5 @@
-using System.Data;
+using System;
+using System.Data;
using System.IO;
using System.Linq;
using System.Text;
@@ -284,7 +285,7 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.AreEqual("/css/path-2/test-path-3.css", stylesheet.VirtualPath);
stylesheet = new Stylesheet("\\test-path-4.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
- Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
+ Assert.Throws(() => // fixed in 7.3 - 7.2.8 used to strip the \
{
repository.Save(stylesheet);
});
@@ -294,11 +295,11 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.IsNull(stylesheet);
// fixed in 7.3 - 7.2.8 used to...
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
stylesheet = repository.Get("\\test-path-4.css"); // outside the filesystem, does not exist
});
- Assert.Throws(() =>
+ Assert.Throws(() =>
{
stylesheet = repository.Get("../packages.config"); // outside the filesystem, exists
});
diff --git a/src/Umbraco.Tests/Published/NestedContentTests.cs b/src/Umbraco.Tests/Published/NestedContentTests.cs
index 9385b8955a..eea65568d4 100644
--- a/src/Umbraco.Tests/Published/NestedContentTests.cs
+++ b/src/Umbraco.Tests/Published/NestedContentTests.cs
@@ -264,7 +264,7 @@ namespace Umbraco.Tests.Published
public override bool HasValue(string culture = null, string segment = null) => _hasValue;
public override object GetSourceValue(string culture = null, string segment = null) => _sourceValue;
public override object GetValue(string culture = null, string segment = null) => PropertyType.ConvertInterToObject(_owner, ReferenceCacheLevel, InterValue, _preview);
- public override object GetXPathValue(string culture = null, string segment = null) => throw new WontImplementException();
+ public override object GetXPathValue(string culture = null, string segment = null) => throw new InvalidOperationException("This method won't be implemented.");
}
}
}
diff --git a/src/Umbraco.Tests/Services/UserServiceTests.cs b/src/Umbraco.Tests/Services/UserServiceTests.cs
index cce54c81a4..a96385a923 100644
--- a/src/Umbraco.Tests/Services/UserServiceTests.cs
+++ b/src/Umbraco.Tests/Services/UserServiceTests.cs
@@ -865,7 +865,7 @@ namespace Umbraco.Tests.Services
var userService = ServiceContext.UserService;
// Act & Assert
- Assert.Throws(() => userService.CreateUserWithIdentity(string.Empty, "john@umbraco.io"));
+ Assert.Throws(() => userService.CreateUserWithIdentity(string.Empty, "john@umbraco.io"));
}
[Test]
diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs
index a673f06e1d..81d5704b5a 100644
--- a/src/Umbraco.Web/Editors/MediaController.cs
+++ b/src/Umbraco.Web/Editors/MediaController.cs
@@ -815,7 +815,7 @@ namespace Umbraco.Web.Editors
}
else
{
- throw new EntityNotFoundException(parentId, "The passed id doesn't exist");
+ throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "The passed id doesn't exist"));
}
}
else
diff --git a/src/Umbraco.Web/GridTemplateExtensions.cs b/src/Umbraco.Web/GridTemplateExtensions.cs
index 2c6e66c68b..afa929cfbb 100644
--- a/src/Umbraco.Web/GridTemplateExtensions.cs
+++ b/src/Umbraco.Web/GridTemplateExtensions.cs
@@ -1,13 +1,10 @@
using System;
-using System.Web.Mvc.Html;
using System.Web.Mvc;
-using System.IO;
-using Umbraco.Core.Exceptions;
+using System.Web.Mvc.Html;
using Umbraco.Core.Models.PublishedContent;
namespace Umbraco.Web
{
-
public static class GridTemplateExtensions
{
public static MvcHtmlString GetGridHtml(this HtmlHelper html, IPublishedProperty property, string framework = "bootstrap3")
@@ -26,18 +23,20 @@ namespace Umbraco.Web
public static MvcHtmlString GetGridHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias)
{
- if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentNullOrEmptyException(nameof(propertyAlias));
+ if (propertyAlias == null) throw new ArgumentNullException(nameof(propertyAlias));
+ if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyAlias));
return html.GetGridHtml(contentItem, propertyAlias, "bootstrap3");
}
public static MvcHtmlString GetGridHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias, string framework)
{
- if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentNullOrEmptyException(nameof(propertyAlias));
+ if (propertyAlias == null) throw new ArgumentNullException(nameof(propertyAlias));
+ if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyAlias));
var view = "Grid/" + framework;
var prop = contentItem.GetProperty(propertyAlias);
- if (prop == null) throw new NullReferenceException("No property type found with alias " + propertyAlias);
+ if (prop == null) throw new InvalidOperationException("No property type found with alias " + propertyAlias);
var model = prop.GetValue();
var asString = model as string;
@@ -54,23 +53,28 @@ namespace Umbraco.Web
var view = "Grid/" + framework;
return html.Partial(view, property.GetValue());
}
+
public static MvcHtmlString GetGridHtml(this IPublishedContent contentItem, HtmlHelper html)
{
return GetGridHtml(contentItem, html, "bodyText", "bootstrap3");
}
+
public static MvcHtmlString GetGridHtml(this IPublishedContent contentItem, HtmlHelper html, string propertyAlias)
{
- if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentNullOrEmptyException(nameof(propertyAlias));
+ if (propertyAlias == null) throw new ArgumentNullException(nameof(propertyAlias));
+ if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyAlias));
return GetGridHtml(contentItem, html, propertyAlias, "bootstrap3");
}
+
public static MvcHtmlString GetGridHtml(this IPublishedContent contentItem, HtmlHelper html, string propertyAlias, string framework)
{
- if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentNullOrEmptyException(nameof(propertyAlias));
+ if (propertyAlias == null) throw new ArgumentNullException(nameof(propertyAlias));
+ if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyAlias));
var view = "Grid/" + framework;
var prop = contentItem.GetProperty(propertyAlias);
- if (prop == null) throw new NullReferenceException("No property type found with alias " + propertyAlias);
+ if (prop == null) throw new InvalidOperationException("No property type found with alias " + propertyAlias);
var model = prop.GetValue();
var asString = model as string;
@@ -78,12 +82,5 @@ namespace Umbraco.Web
return html.Partial(view, model);
}
-
- private class FakeView : IView
- {
- public void Render(ViewContext viewContext, TextWriter writer)
- {
- }
- }
}
}
diff --git a/src/Umbraco.Web/HtmlHelperRenderExtensions.cs b/src/Umbraco.Web/HtmlHelperRenderExtensions.cs
index 7249500441..0fd591e96b 100644
--- a/src/Umbraco.Web/HtmlHelperRenderExtensions.cs
+++ b/src/Umbraco.Web/HtmlHelperRenderExtensions.cs
@@ -8,11 +8,7 @@ using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
using Umbraco.Core;
-using Umbraco.Core.Composing;
-using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
-using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
using Umbraco.Web.Security;
using Current = Umbraco.Web.Composing.Current;
@@ -169,8 +165,9 @@ namespace Umbraco.Web
///
public static IHtmlString Action(this HtmlHelper htmlHelper, string actionName, Type surfaceType)
{
+ if (actionName == null) throw new ArgumentNullException(nameof(actionName));
+ if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(actionName));
if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType));
- if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentNullOrEmptyException(nameof(actionName));
var routeVals = new RouteValueDictionary(new {area = ""});
@@ -221,7 +218,7 @@ namespace Umbraco.Web
{
_viewContext = viewContext;
_method = method;
- _controllerName = controllerName;
+ _controllerName = controllerName;
_encryptedString = UrlHelperRenderExtensions.CreateEncryptedRouteString(controllerName, controllerAction, area, additionalRouteVals);
}
@@ -230,7 +227,7 @@ namespace Umbraco.Web
private readonly FormMethod _method;
private bool _disposed;
private readonly string _encryptedString;
- private readonly string _controllerName;
+ private readonly string _controllerName;
protected override void Dispose(bool disposing)
{
@@ -243,12 +240,12 @@ namespace Umbraco.Web
|| _controllerName == "UmbProfile"
|| _controllerName == "UmbLoginStatus"
|| _controllerName == "UmbLogin")
- {
+ {
_viewContext.Writer.Write(AntiForgery.GetHtml().ToString());
- }
+ }
//write out the hidden surface form routes
- _viewContext.Writer.Write("");
+ _viewContext.Writer.Write("");
base.Dispose(disposing);
}
@@ -355,8 +352,10 @@ namespace Umbraco.Web
IDictionary htmlAttributes,
FormMethod method)
{
- if (string.IsNullOrWhiteSpace(action)) throw new ArgumentNullOrEmptyException(nameof(action));
- if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrWhiteSpace(action)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(action));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(controllerName));
return html.BeginUmbracoForm(action, controllerName, "", additionalRouteVals, htmlAttributes, method);
}
@@ -374,8 +373,10 @@ namespace Umbraco.Web
object additionalRouteVals,
IDictionary htmlAttributes)
{
- if (string.IsNullOrWhiteSpace(action)) throw new ArgumentNullOrEmptyException(nameof(action));
- if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrWhiteSpace(action)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(action));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(controllerName));
return html.BeginUmbracoForm(action, controllerName, "", additionalRouteVals, htmlAttributes);
}
@@ -575,7 +576,9 @@ namespace Umbraco.Web
IDictionary htmlAttributes,
FormMethod method)
{
- if (string.IsNullOrWhiteSpace(action)) throw new ArgumentNullOrEmptyException(nameof(action));
+
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrWhiteSpace(action)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(action));
if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType));
var area = "";
@@ -687,8 +690,10 @@ namespace Umbraco.Web
IDictionary htmlAttributes,
FormMethod method)
{
- if (string.IsNullOrEmpty(action)) throw new ArgumentNullOrEmptyException(nameof(action));
- if (string.IsNullOrEmpty(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrEmpty(action)) throw new ArgumentException("Value can't be empty.", nameof(action));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(controllerName));
var formAction = Current.UmbracoContext.OriginalRequestUrl.PathAndQuery;
return html.RenderForm(formAction, method, htmlAttributes, controllerName, action, area, additionalRouteVals);
diff --git a/src/Umbraco.Web/HttpUrlHelperExtensions.cs b/src/Umbraco.Web/HttpUrlHelperExtensions.cs
index 2eb45465cf..4e5533d327 100644
--- a/src/Umbraco.Web/HttpUrlHelperExtensions.cs
+++ b/src/Umbraco.Web/HttpUrlHelperExtensions.cs
@@ -3,7 +3,6 @@ using System.Linq;
using System.Linq.Expressions;
using System.Web.Http.Routing;
using Umbraco.Core;
-using Umbraco.Core.Exceptions;
using Umbraco.Web.Composing;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
@@ -53,7 +52,8 @@ namespace Umbraco.Web
///
public static string GetUmbracoApiService(this UrlHelper url, string actionName, Type apiControllerType, object id = null)
{
- if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentNullOrEmptyException(nameof(actionName));
+ if (actionName == null) throw new ArgumentNullException(nameof(actionName));
+ if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(actionName));
if (apiControllerType == null) throw new ArgumentNullException(nameof(apiControllerType));
var area = "";
@@ -95,8 +95,10 @@ namespace Umbraco.Web
///
public static string GetUmbracoApiService(this UrlHelper url, string actionName, string controllerName, string area, object id = null)
{
- if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentNullOrEmptyException(nameof(actionName));
- if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (actionName == null) throw new ArgumentNullException(nameof(actionName));
+ if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(actionName));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(controllerName));
string routeName;
if (area.IsNullOrWhiteSpace())
diff --git a/src/Umbraco.Web/Install/InstallException.cs b/src/Umbraco.Web/Install/InstallException.cs
index a9f254e921..3dc297e6b2 100644
--- a/src/Umbraco.Web/Install/InstallException.cs
+++ b/src/Umbraco.Web/Install/InstallException.cs
@@ -1,44 +1,106 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.Serialization;
namespace Umbraco.Web.Install
{
///
- /// Used for steps to be able to return a json structure back to the UI
+ /// Used for steps to be able to return a JSON structure back to the UI.
///
- internal class InstallException : Exception
+ ///
+ [Serializable]
+ public class InstallException : Exception
{
- private readonly string _message;
+ ///
+ /// Gets the view.
+ ///
+ ///
+ /// The view.
+ ///
public string View { get; private set; }
+
+ ///
+ /// Gets the view model.
+ ///
+ ///
+ /// The view model.
+ ///
+ ///
+ /// This object is not included when serializing.
+ ///
public object ViewModel { get; private set; }
- public override string Message
- {
- get { return _message; }
- }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public InstallException()
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
+ public InstallException(string message)
+ : this(message, "error", null)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message.
+ /// The view model.
+ public InstallException(string message, object viewModel)
+ : this(message, "error", viewModel)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message.
+ /// The view.
+ /// The view model.
public InstallException(string message, string view, object viewModel)
+ : base(message)
{
- _message = message;
View = view;
ViewModel = viewModel;
}
- public InstallException(string message, object viewModel)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public InstallException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected InstallException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
{
- _message = message;
- View = "error";
- ViewModel = viewModel;
+ View = info.GetString(nameof(View));
}
- public InstallException(string message)
+ ///
+ /// When overridden in a derived class, sets the with information about the exception.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ /// info
+ public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
- _message = message;
- View = "error";
- ViewModel = null;
+ if (info == null)
+ {
+ throw new ArgumentNullException(nameof(info));
+ }
+
+ info.AddValue(nameof(View), View);
+
+ base.GetObjectData(info, context);
}
}
}
diff --git a/src/Umbraco.Web/Media/Exif/ExifExceptions.cs b/src/Umbraco.Web/Media/Exif/ExifExceptions.cs
index 040e84ff99..976fb849ed 100644
--- a/src/Umbraco.Web/Media/Exif/ExifExceptions.cs
+++ b/src/Umbraco.Web/Media/Exif/ExifExceptions.cs
@@ -1,42 +1,87 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Web.Media.Exif
{
///
- /// The exception that is thrown when the format of the JPEG/Exif file
- /// could not be understood.
+ /// The exception that is thrown when the format of the JPEG/EXIF file could not be understood.
///
- internal class NotValidExifFileException : Exception
+ ///
+ [Serializable]
+ public class NotValidExifFileException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public NotValidExifFileException()
- : base("Not a valid JPEG/Exif file.")
- {
- ;
- }
+ : base("Not a valid JPEG/EXIF file.")
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public NotValidExifFileException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public NotValidExifFileException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected NotValidExifFileException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
///
- /// The exception that is thrown when an invalid enum type is given to an
- /// ExifEnumProperty.
+ /// The exception that is thrown when an invalid enum type is given to an ExifEnumProperty.
///
+ ///
+ [Serializable]
internal class UnknownEnumTypeException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public UnknownEnumTypeException()
: base("Unknown enum type.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public UnknownEnumTypeException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public UnknownEnumTypeException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected UnknownEnumTypeException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Web/Media/Exif/JPEGExceptions.cs b/src/Umbraco.Web/Media/Exif/JPEGExceptions.cs
index 631c3cb1b9..f23dbeb4d4 100644
--- a/src/Umbraco.Web/Media/Exif/JPEGExceptions.cs
+++ b/src/Umbraco.Web/Media/Exif/JPEGExceptions.cs
@@ -1,99 +1,211 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Web.Media.Exif
{
///
- /// The exception that is thrown when the format of the image file
- /// could not be understood.
+ /// The exception that is thrown when the format of the image file could not be understood.
///
+ ///
+ [Serializable]
internal class NotValidImageFileException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public NotValidImageFileException()
: base("Not a valid image file.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public NotValidImageFileException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public NotValidImageFileException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected NotValidImageFileException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
///
- /// The exception that is thrown when the format of the JPEG file
- /// could not be understood.
+ /// The exception that is thrown when the format of the JPEG file could not be understood.
///
- internal class NotValidJPEGFileException : Exception
+ ///
+ [Serializable]
+ public class NotValidJPEGFileException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public NotValidJPEGFileException()
: base("Not a valid JPEG file.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public NotValidJPEGFileException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public NotValidJPEGFileException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected NotValidJPEGFileException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
///
- /// The exception that is thrown when the format of the TIFF file
- /// could not be understood.
+ /// The exception that is thrown when the format of the TIFF file could not be understood.
///
- internal class NotValidTIFFileException : Exception
+ ///
+ [Serializable]
+ public class NotValidTIFFileException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public NotValidTIFFileException()
: base("Not a valid TIFF file.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public NotValidTIFFileException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public NotValidTIFFileException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected NotValidTIFFileException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
///
- /// The exception that is thrown when the format of the TIFF header
- /// could not be understood.
+ /// The exception that is thrown when the format of the TIFF header could not be understood.
///
+ ///
+ [Serializable]
internal class NotValidTIFFHeader : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public NotValidTIFFHeader()
: base("Not a valid TIFF header.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public NotValidTIFFHeader(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public NotValidTIFFHeader(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected NotValidTIFFHeader(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
///
/// The exception that is thrown when the length of a section exceeds 64 kB.
///
- internal class SectionExceeds64KBException : Exception
+ ///
+ [Serializable]
+ public class SectionExceeds64KBException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public SectionExceeds64KBException()
: base("Section length exceeds 64 kB.")
- {
- ;
- }
+ { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public SectionExceeds64KBException(string message)
: base(message)
- {
- ;
- }
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public SectionExceeds64KBException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected SectionExceeds64KBException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Web/Models/Trees/TreeNode.cs b/src/Umbraco.Web/Models/Trees/TreeNode.cs
index 63614b141f..dc383bd18b 100644
--- a/src/Umbraco.Web/Models/Trees/TreeNode.cs
+++ b/src/Umbraco.Web/Models/Trees/TreeNode.cs
@@ -1,10 +1,9 @@
-using System.Runtime.Serialization;
-using Umbraco.Core.IO;
+using System;
using System.Collections.Generic;
+using System.Runtime.Serialization;
using Umbraco.Core;
using Umbraco.Core.Composing;
-using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
+using Umbraco.Core.IO;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.Models.Trees
@@ -27,7 +26,8 @@ namespace Umbraco.Web.Models.Trees
///
internal TreeNode(string nodeId, string parentId, string getChildNodesUrl, string menuUrl)
{
- if (string.IsNullOrWhiteSpace(nodeId)) throw new ArgumentNullOrEmptyException(nameof(nodeId));
+ if (nodeId == null) throw new ArgumentNullException(nameof(nodeId));
+ if (string.IsNullOrWhiteSpace(nodeId)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(nodeId));
Id = nodeId;
ParentId = parentId;
diff --git a/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs b/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs
index 61a659615f..493d9deed2 100644
--- a/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs
+++ b/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs
@@ -6,7 +6,6 @@ using System.Web.Routing;
using System.Web.SessionState;
using Umbraco.Core;
using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
using Umbraco.Web.WebApi;
namespace Umbraco.Web.Mvc
@@ -48,7 +47,8 @@ namespace Umbraco.Web.Mvc
bool isMvc = true,
string areaPathPrefix = "")
{
- if (string.IsNullOrEmpty(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrEmpty(controllerName)) throw new ArgumentException("Value can't be empty.", nameof(controllerName));
if (controllerSuffixName == null) throw new ArgumentNullException(nameof(controllerSuffixName));
if (controllerType == null) throw new ArgumentNullException(nameof(controllerType));
diff --git a/src/Umbraco.Web/Mvc/HttpUmbracoFormRouteStringException.cs b/src/Umbraco.Web/Mvc/HttpUmbracoFormRouteStringException.cs
index b08fde081a..db2040665c 100644
--- a/src/Umbraco.Web/Mvc/HttpUmbracoFormRouteStringException.cs
+++ b/src/Umbraco.Web/Mvc/HttpUmbracoFormRouteStringException.cs
@@ -1,5 +1,4 @@
using System;
-using System.Net;
using System.Runtime.Serialization;
using System.Web;
@@ -12,6 +11,13 @@ namespace Umbraco.Web.Mvc
[Serializable]
public sealed class HttpUmbracoFormRouteStringException : HttpException
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public HttpUmbracoFormRouteStringException()
+ { }
+
+ ///
/// Initializes a new instance of the class.
///
/// The that holds the serialized object data about the exception being thrown.
@@ -36,6 +42,5 @@ namespace Umbraco.Web.Mvc
public HttpUmbracoFormRouteStringException(string message, Exception innerException)
: base(message, innerException)
{ }
-
}
}
diff --git a/src/Umbraco.Web/Mvc/ModelBindingException.cs b/src/Umbraco.Web/Mvc/ModelBindingException.cs
index d675ae4a65..548b548d4e 100644
--- a/src/Umbraco.Web/Mvc/ModelBindingException.cs
+++ b/src/Umbraco.Web/Mvc/ModelBindingException.cs
@@ -1,14 +1,45 @@
using System;
+using System.Runtime.Serialization;
namespace Umbraco.Web.Mvc
{
+ ///
+ /// The exception that is thrown when an error occurs while binding a source to a model.
+ ///
+ ///
+ [Serializable]
public class ModelBindingException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public ModelBindingException()
{ }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public ModelBindingException(string message)
: base(message)
{ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The error message that explains the reason for the exception.
+ /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+ public ModelBindingException(string message, Exception innerException)
+ : base(message, innerException)
+ { }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
+ protected ModelBindingException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ { }
}
}
diff --git a/src/Umbraco.Web/Search/SearchableTreeAttribute.cs b/src/Umbraco.Web/Search/SearchableTreeAttribute.cs
index a2311ae989..d81a85bb4b 100644
--- a/src/Umbraco.Web/Search/SearchableTreeAttribute.cs
+++ b/src/Umbraco.Web/Search/SearchableTreeAttribute.cs
@@ -1,5 +1,4 @@
using System;
-using Umbraco.Core.Exceptions;
namespace Umbraco.Web.Search
{
@@ -8,42 +7,47 @@ namespace Umbraco.Web.Search
{
public const int DefaultSortOrder = 1000;
- ///
- /// This constructor defines both the angular service and method name to use
- ///
- ///
- ///
- public SearchableTreeAttribute(string serviceName, string methodName) : this(serviceName, methodName, DefaultSortOrder) { }
-
- ///
- /// This constructor defines both the angular service and method name to use and explicitly defines a sort order for the results
- ///
- ///
- ///
- ///
- public SearchableTreeAttribute(string serviceName, string methodName, int sortOrder)
- {
- if (string.IsNullOrWhiteSpace(serviceName)) throw new ArgumentNullOrEmptyException(nameof(serviceName));
- if (string.IsNullOrWhiteSpace(methodName)) throw new ArgumentNullOrEmptyException(nameof(methodName));
- MethodName = methodName;
- SortOrder = sortOrder;
- ServiceName = serviceName;
- }
-
- ///
- /// This constructor will assume that the method name equals `format(searchResult, appAlias, treeAlias)`
- ///
- ///
- public SearchableTreeAttribute(string serviceName)
- {
- if (string.IsNullOrWhiteSpace(serviceName)) throw new ArgumentNullOrEmptyException(nameof(serviceName));
- MethodName = "";
- ServiceName = serviceName;
- SortOrder = DefaultSortOrder;
- }
+ public string ServiceName { get; }
public string MethodName { get; }
- public string ServiceName { get; }
+
public int SortOrder { get; }
+
+ ///
+ /// This constructor will assume that the method name equals `format(searchResult, appAlias, treeAlias)`.
+ ///
+ /// Name of the service.
+ public SearchableTreeAttribute(string serviceName)
+ : this(serviceName, string.Empty)
+ { }
+
+ ///
+ /// This constructor defines both the Angular service and method name to use.
+ ///
+ /// Name of the service.
+ /// Name of the method.
+ public SearchableTreeAttribute(string serviceName, string methodName)
+ : this(serviceName, methodName, DefaultSortOrder)
+ { }
+
+ ///
+ /// This constructor defines both the Angular service and method name to use and explicitly defines a sort order for the results
+ ///
+ /// Name of the service.
+ /// Name of the method.
+ /// The sort order.
+ /// serviceName
+ /// or
+ /// methodName
+ /// Value can't be empty or consist only of white-space characters. - serviceName
+ public SearchableTreeAttribute(string serviceName, string methodName, int sortOrder)
+ {
+ if (serviceName == null) throw new ArgumentNullException(nameof(serviceName));
+ if (string.IsNullOrWhiteSpace(serviceName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(serviceName));
+
+ ServiceName = serviceName;
+ MethodName = methodName ?? throw new ArgumentNullException(nameof(methodName));
+ SortOrder = sortOrder;
+ }
}
}
diff --git a/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs b/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs
index b1b2755f4c..568bfc1a26 100644
--- a/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs
+++ b/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs
@@ -75,7 +75,8 @@ namespace Umbraco.Web.Security
///
public static void ForUmbracoBackOffice(this AuthenticationOptions options, string style, string icon, string callbackPath = null)
{
- if (string.IsNullOrEmpty(options.AuthenticationType)) throw new ArgumentNullOrEmptyException("options.AuthenticationType");
+ if (options == null) throw new ArgumentNullException(nameof(options));
+ if (string.IsNullOrEmpty(options.AuthenticationType)) throw new InvalidOperationException("The authentication type can't be null or empty.");
//Ensure the prefix is set
if (options.AuthenticationType.StartsWith(Constants.Security.BackOfficeExternalAuthenticationTypePrefix) == false)
diff --git a/src/Umbraco.Web/UrlHelperExtensions.cs b/src/Umbraco.Web/UrlHelperExtensions.cs
index 249ce76193..7e63ff16b8 100644
--- a/src/Umbraco.Web/UrlHelperExtensions.cs
+++ b/src/Umbraco.Web/UrlHelperExtensions.cs
@@ -2,15 +2,12 @@
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
-using System.Management.Instrumentation;
using System.Web.Mvc;
using System.Web.Routing;
using ClientDependency.Core.Config;
using Umbraco.Core;
using Umbraco.Core.Configuration;
-using Umbraco.Core.Exceptions;
using Umbraco.Web.Composing;
-using Umbraco.Web.Editors;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
@@ -70,7 +67,8 @@ namespace Umbraco.Web
///
public static string GetUmbracoApiService(this UrlHelper url, string actionName, Type apiControllerType, RouteValueDictionary routeVals = null)
{
- if (string.IsNullOrEmpty(actionName)) throw new ArgumentNullOrEmptyException(nameof(actionName));
+ if (actionName == null) throw new ArgumentNullException(nameof(actionName));
+ if (string.IsNullOrEmpty(actionName)) throw new ArgumentException("Value can't be empty.", nameof(actionName));
if (apiControllerType == null) throw new ArgumentNullException(nameof(apiControllerType));
var area = "";
@@ -99,8 +97,10 @@ namespace Umbraco.Web
///
public static string GetUmbracoApiService(this UrlHelper url, string actionName, string controllerName, string area, RouteValueDictionary routeVals = null)
{
- if (string.IsNullOrEmpty(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
- if (string.IsNullOrEmpty(actionName)) throw new ArgumentNullOrEmptyException(nameof(actionName));
+ if (actionName == null) throw new ArgumentNullException(nameof(actionName));
+ if (string.IsNullOrEmpty(actionName)) throw new ArgumentException("Value can't be empty.", nameof(actionName));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrEmpty(controllerName)) throw new ArgumentException("Value can't be empty.", nameof(controllerName));
if (routeVals == null)
{
diff --git a/src/Umbraco.Web/UrlHelperRenderExtensions.cs b/src/Umbraco.Web/UrlHelperRenderExtensions.cs
index 48c26c93dd..8e410bf584 100644
--- a/src/Umbraco.Web/UrlHelperRenderExtensions.cs
+++ b/src/Umbraco.Web/UrlHelperRenderExtensions.cs
@@ -4,8 +4,6 @@ using System.Linq;
using System.Web;
using System.Web.Mvc;
using Umbraco.Core;
-using Umbraco.Core.Exceptions;
-using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors.ValueConverters;
using Umbraco.Web.Composing;
@@ -302,8 +300,10 @@ namespace Umbraco.Web
///
public static string SurfaceAction(this UrlHelper url, string action, string controllerName, string area, object additionalRouteVals)
{
- if (string.IsNullOrEmpty(action)) throw new ArgumentNullOrEmptyException(nameof(action));
- if (string.IsNullOrEmpty(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrEmpty(action)) throw new ArgumentException("Value can't be empty.", nameof(action));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrEmpty(controllerName)) throw new ArgumentException("Value can't be empty.", nameof(controllerName));
var encryptedRoute = CreateEncryptedRouteString(controllerName, action, area, additionalRouteVals);
@@ -333,7 +333,8 @@ namespace Umbraco.Web
///
public static string SurfaceAction(this UrlHelper url, string action, Type surfaceType, object additionalRouteVals)
{
- if (string.IsNullOrEmpty(action)) throw new ArgumentNullOrEmptyException(nameof(action));
+ if (action == null) throw new ArgumentNullException(nameof(action));
+ if (string.IsNullOrEmpty(action)) throw new ArgumentException("Value can't be empty.", nameof(action));
if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType));
var area = "";
@@ -392,8 +393,10 @@ namespace Umbraco.Web
///
internal static string CreateEncryptedRouteString(string controllerName, string controllerAction, string area, object additionalRouteVals = null)
{
- if (string.IsNullOrEmpty(controllerName)) throw new ArgumentNullOrEmptyException(nameof(controllerName));
- if (string.IsNullOrEmpty(controllerAction)) throw new ArgumentNullOrEmptyException(nameof(controllerAction));
+ if (controllerName == null) throw new ArgumentNullException(nameof(controllerName));
+ if (string.IsNullOrEmpty(controllerName)) throw new ArgumentException("Value can't be empty.", nameof(controllerName));
+ if (controllerAction == null) throw new ArgumentNullException(nameof(controllerAction));
+ if (string.IsNullOrEmpty(controllerAction)) throw new ArgumentException("Value can't be empty.", nameof(controllerAction));
if (area == null) throw new ArgumentNullException(nameof(area));
//need to create a params string as Base64 to put into our hidden field to use during the routes
diff --git a/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs b/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
index efee045890..28f09b46b7 100644
--- a/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
+++ b/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForContentAttribute.cs
@@ -1,16 +1,13 @@
using System;
+using System.Net;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
-using Umbraco.Core.Exceptions;
-using Umbraco.Web.Composing;
-using Umbraco.Web.Editors;
-
using Umbraco.Core;
using Umbraco.Core.Models;
-using Umbraco.Web.Actions;
using Umbraco.Core.Security;
-using System.Net;
+using Umbraco.Web.Actions;
+using Umbraco.Web.Composing;
namespace Umbraco.Web.WebApi.Filters
{
@@ -46,7 +43,9 @@ namespace Umbraco.Web.WebApi.Filters
public EnsureUserPermissionForContentAttribute(string paramName)
{
- if (string.IsNullOrEmpty(paramName)) throw new ArgumentNullOrEmptyException(nameof(paramName));
+ if (paramName == null) throw new ArgumentNullException(nameof(paramName));
+ if (string.IsNullOrEmpty(paramName)) throw new ArgumentException("Value can't be empty.", nameof(paramName));
+
_paramName = paramName;
_permissionToCheck = ActionBrowse.ActionLetter;
}
diff --git a/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForMediaAttribute.cs b/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForMediaAttribute.cs
index 24bf2ea9a8..60e2889fd5 100644
--- a/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForMediaAttribute.cs
+++ b/src/Umbraco.Web/WebApi/Filters/EnsureUserPermissionForMediaAttribute.cs
@@ -3,7 +3,6 @@ using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using Umbraco.Core;
-using Umbraco.Core.Exceptions;
using Umbraco.Core.Models;
using Umbraco.Web.Composing;
using Umbraco.Web.Editors;
@@ -38,14 +37,18 @@ namespace Umbraco.Web.WebApi.Filters
public EnsureUserPermissionForMediaAttribute(string paramName)
{
- if (string.IsNullOrEmpty(paramName)) throw new ArgumentNullOrEmptyException(nameof(paramName));
+ if (paramName == null) throw new ArgumentNullException(nameof(paramName));
+ if (string.IsNullOrEmpty(paramName)) throw new ArgumentException("Value can't be empty.", nameof(paramName));
+
_paramName = paramName;
}
// TODO: v8 guess this is not used anymore, source is ignored?!
public EnsureUserPermissionForMediaAttribute(string paramName, DictionarySource source)
{
- if (string.IsNullOrEmpty(paramName)) throw new ArgumentNullOrEmptyException(nameof(paramName));
+ if (paramName == null) throw new ArgumentNullException(nameof(paramName));
+ if (string.IsNullOrEmpty(paramName)) throw new ArgumentException("Value can't be empty.", nameof(paramName));
+
_paramName = paramName;
}
diff --git a/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs b/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs
index 713bce7d1b..7f05d59a18 100644
--- a/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs
+++ b/src/Umbraco.Web/WebApi/Filters/OutgoingDateTimeFormatAttribute.cs
@@ -1,10 +1,8 @@
-using Newtonsoft.Json.Converters;
-using System;
+using System;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http.Controllers;
-using Umbraco.Core;
-using Umbraco.Core.Exceptions;
+using Newtonsoft.Json.Converters;
namespace Umbraco.Web.WebApi.Filters
{
@@ -21,7 +19,9 @@ namespace Umbraco.Web.WebApi.Filters
///
public JsonDateTimeFormatAttributeAttribute(string format)
{
- if (string.IsNullOrEmpty(format)) throw new ArgumentNullOrEmptyException(nameof(format));
+ if (format == null) throw new ArgumentNullException(nameof(format));
+ if (string.IsNullOrEmpty(format)) throw new ArgumentException("Value can't be empty.", nameof(format));
+
_format = format;
}