ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From agoncha...@apache.org
Subject [04/50] [abbrv] ignite git commit: .NET: Fix dictionary property handling in plugin configuration
Date Fri, 24 Mar 2017 14:11:54 GMT
.NET: Fix dictionary property handling in plugin configuration


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/47189d2d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/47189d2d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/47189d2d

Branch: refs/heads/ignite-3477-master
Commit: 47189d2d21e59fe3196e30c0a8c098f01e3ed034
Parents: 9dc64fe
Author: Pavel Tupitsyn <ptupitsyn@apache.org>
Authored: Mon Mar 20 12:39:07 2017 +0300
Committer: Pavel Tupitsyn <ptupitsyn@apache.org>
Committed: Mon Mar 20 12:39:07 2017 +0300

----------------------------------------------------------------------
 .../Common/IgniteConfigurationXmlSerializer.cs  | 22 +++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/47189d2d/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
index 8290329..feb0f9e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
@@ -84,8 +84,14 @@ namespace Apache.Ignite.Core.Impl.Common
         private static void WriteElement(object obj, XmlWriter writer, string rootElementName,
Type valueType, 
             PropertyInfo property = null)
         {
-            if (property != null && (!property.CanWrite || IsObsolete(property)))
-                return;
+            if (property != null)
+            {
+                if (!property.CanWrite && !IsKeyValuePair(property.DeclaringType))
+                    return;
+
+                if (IsObsolete(property))
+                    return;
+            }
 
             if (valueType == typeof(IgniteConfiguration))
                 writer.WriteStartElement(rootElementName, Schema);  // write xmlns for the
root element
@@ -416,7 +422,7 @@ namespace Apache.Ignite.Core.Impl.Common
         {
             Debug.Assert(propertyType != null);
 
-            if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition()
== typeof (KeyValuePair<,>))
+            if (IsKeyValuePair(propertyType))
                 return false;
 
             return propertyType.IsValueType || propertyType == typeof (string) || propertyType
== typeof (Type) ||
@@ -424,6 +430,16 @@ namespace Apache.Ignite.Core.Impl.Common
         }
 
         /// <summary>
+        /// Determines whether specified type is KeyValuePair.
+        /// </summary>
+        private static bool IsKeyValuePair(Type propertyType)
+        {
+            Debug.Assert(propertyType != null);
+
+            return propertyType.IsGenericType && propertyType.GetGenericTypeDefinition()
== typeof (KeyValuePair<,>);
+        }
+
+        /// <summary>
         /// Gets converter for a property.
         /// </summary>
         private static TypeConverter GetConverter(PropertyInfo property, Type propertyType)


Mime
View raw message