[mapguide-commits] r5201 - in
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI: . Resource
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Tue Sep 28 06:57:10 EDT 2010
Author: jng
Date: 2010-09-28 10:57:10 +0000 (Tue, 28 Sep 2010)
New Revision: 5201
Modified:
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Check.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceValidatorSet.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ValidationResultSet.cs
Log:
Add precondition safeguards
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Check.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Check.cs 2010-09-28 10:03:39 UTC (rev 5200)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Check.cs 2010-09-28 10:57:10 UTC (rev 5201)
@@ -23,18 +23,59 @@
namespace OSGeo.MapGuide.MaestroAPI
{
+ [global::System.Serializable]
+ public class PreconditionException : Exception
+ {
+ //
+ // For guidelines regarding the creation of new exception types, see
+ // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp
+ // and
+ // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp
+ //
+
+ public PreconditionException() { }
+ public PreconditionException(string message) : base(message) { }
+ public PreconditionException(string message, Exception inner) : base(message, inner) { }
+ protected PreconditionException(
+ System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context)
+ : base(info, context) { }
+ }
+
public static class Check
{
+ /// <summary>
+ /// Check that condition evaluates to true
+ /// </summary>
+ /// <param name="condition"></param>
+ /// <param name="msg"></param>
+ public static void That(bool condition, string msg)
+ {
+ if (!condition)
+ throw new PreconditionException(msg);
+ }
+
+ /// <summary>
+ /// Check that value is not null
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="obj"></param>
+ /// <param name="arg"></param>
public static void NotNull<T>(T obj, string arg) where T : class
{
if (obj == null)
- throw new ArgumentNullException(arg);
+ throw new PreconditionException("Value is null: " + arg); //LOCALIZEME
}
- public static void NotEmpty(string msg, string arg)
+ /// <summary>
+ /// Check that string value is not null or empty
+ /// </summary>
+ /// <param name="value"></param>
+ /// <param name="arg"></param>
+ public static void NotEmpty(string value, string arg)
{
- if (string.IsNullOrEmpty(msg))
- throw new ArgumentException("Empty value", arg); //LOCALIZEME
+ if (string.IsNullOrEmpty(value))
+ throw new PreconditionException("string is empty: " + arg); //LOCALIZEME
}
}
}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs 2010-09-28 10:03:39 UTC (rev 5200)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceTypeDescriptor.cs 2010-09-28 10:57:10 UTC (rev 5201)
@@ -31,6 +31,9 @@
private ResourceTypeDescriptor(string resType, string ver)
{
+ Check.NotEmpty(resType, "resType");
+ Check.NotEmpty(ver, "ver");
+
this.ResourceType = resType;
this.Version = ver;
}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceValidatorSet.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceValidatorSet.cs 2010-09-28 10:03:39 UTC (rev 5200)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ResourceValidatorSet.cs 2010-09-28 10:57:10 UTC (rev 5201)
@@ -31,14 +31,18 @@
{
private static List<IResourceValidator> m_validators = new List<IResourceValidator>();
- public static void RegisterValidator(IResourceValidator v)
+ public static void RegisterValidator(IResourceValidator validator)
{
- if (!m_validators.Contains(v))
- m_validators.Add(v);
+ Check.NotNull(validator, "validator");
+
+ if (!m_validators.Contains(validator))
+ m_validators.Add(validator);
}
public static ValidationIssue[] Validate(IEnumerable<IResource> items, bool recurse)
{
+ Check.NotNull(items, "items");
+
var issues = new List<ValidationIssue>();
foreach (var item in items)
{
@@ -49,6 +53,8 @@
public static ValidationIssue[] Validate(IResource item, bool recurse)
{
+ Check.NotNull(item, "item");
+
var issueSet = new ValidationResultSet();
List<ValidationIssue> issues = new List<ValidationIssue>();
if (!HasValidator(item.ResourceType, item.ResourceVersion))
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ValidationResultSet.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ValidationResultSet.cs 2010-09-28 10:03:39 UTC (rev 5200)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/ValidationResultSet.cs 2010-09-28 10:57:10 UTC (rev 5201)
@@ -31,7 +31,7 @@
public class ValidationResultSet
{
//HACK: Abusing the Key component of Dictionary<K, V> because there is no
- //Set collection in .net fx 2.0!
+ //Set<T> collection in .net fx 2.0!
private Dictionary<string, Dictionary<ValidationIssue, ValidationIssue>> _issues;
public ValidationResultSet()
@@ -53,6 +53,8 @@
public ICollection<ValidationIssue> GetIssuesForResource(string resourceId)
{
+ Check.NotEmpty(resourceId, "resourceId");
+
return _issues[resourceId].Keys;
}
@@ -68,6 +70,10 @@
public void AddIssue(ValidationIssue issue)
{
+ Check.NotNull(issue, "issue");
+ Check.NotNull(issue.Resource, "issue.Resource");
+ Check.NotEmpty(issue.Resource.ResourceID, "issue.Resource.ResourceID");
+
if (!_issues.ContainsKey(issue.Resource.ResourceID))
_issues[issue.Resource.ResourceID] = new Dictionary<ValidationIssue, ValidationIssue>();
More information about the mapguide-commits
mailing list