[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