You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/09/27 11:09:40 UTC

[45/63] [abbrv] ignite git commit: IGNITE-3491 .NET: Allow type name without assembly for type properties in app.config

IGNITE-3491 .NET: Allow type name without assembly for type properties in app.config


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

Branch: refs/heads/ignite-comm-opts2-fix
Commit: 33a6878eccd60f86648067901613b713ef3bb71f
Parents: 8032fc2
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Mon Sep 26 14:56:51 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Mon Sep 26 14:56:51 2016 +0300

----------------------------------------------------------------------
 .../IgniteConfigurationSerializerTest.cs        |  4 ++--
 .../Common/IgniteConfigurationXmlSerializer.cs  | 21 +++++++++++---------
 2 files changed, 14 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/33a6878e/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index b6ee5cb..8afef33 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@ -59,7 +59,7 @@ namespace Apache.Ignite.Core.Tests
             var xml = @"<igniteConfig workDirectory='c:' JvmMaxMemoryMb='1024' MetricsLogFrequency='0:0:10' isDaemon='true' isLateAffinityAssignment='false' springConfigUrl='c:\myconfig.xml'>
                             <localhost>127.1.1.1</localhost>
                             <binaryConfiguration compactFooter='false'>
-                                <defaultNameMapper type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+NameMapper, Apache.Ignite.Core.Tests' bar='testBar' />
+                                <defaultNameMapper type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+NameMapper' bar='testBar' />
                                 <types>
                                     <string>Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+FooClass, Apache.Ignite.Core.Tests</string>
                                 </types>
@@ -70,7 +70,7 @@ namespace Apache.Ignite.Core.Tests
                             <communicationSpi type='TcpCommunicationSpi' ackSendThreshold='33' idleConnectionTimeout='0:1:2' />
                             <jvmOptions><string>-Xms1g</string><string>-Xmx4g</string></jvmOptions>
                             <lifecycleBeans>
-                                <iLifecycleBean type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+LifecycleBean, Apache.Ignite.Core.Tests' foo='15' />
+                                <iLifecycleBean type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+LifecycleBean' foo='15' />
                             </lifecycleBeans>
                             <cacheConfiguration>
                                 <cacheConfiguration cacheMode='Replicated' readThrough='true' writeThrough='true'>

http://git-wip-us.apache.org/repos/asf/ignite/blob/33a6878e/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 52fbc30..e1df50b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteConfigurationXmlSerializer.cs
@@ -26,6 +26,7 @@ namespace Apache.Ignite.Core.Impl.Common
     using System.Linq;
     using System.Reflection;
     using System.Xml;
+    using Apache.Ignite.Core.Impl.Binary;
     using Apache.Ignite.Core.Impl.Events;
 
     /// <summary>
@@ -57,7 +58,7 @@ namespace Apache.Ignite.Core.Impl.Common
             var cfg = new IgniteConfiguration();
 
             if (reader.NodeType == XmlNodeType.Element || reader.Read())
-                ReadElement(reader, cfg);
+                ReadElement(reader, cfg, new TypeResolver());
 
             return cfg;
         }
@@ -164,7 +165,7 @@ namespace Apache.Ignite.Core.Impl.Common
         /// <summary>
         /// Reads the element.
         /// </summary>
-        private static void ReadElement(XmlReader reader, object target)
+        private static void ReadElement(XmlReader reader, object target, TypeResolver resolver)
         {
             var targetType = target.GetType();
 
@@ -197,7 +198,7 @@ namespace Apache.Ignite.Core.Impl.Common
                 else if (propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof (ICollection<>))
                 {
                     // Collection
-                    ReadCollectionProperty(reader, prop, target);
+                    ReadCollectionProperty(reader, prop, target, resolver);
                 }
                 else if (propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof (IDictionary<,>))
                 {
@@ -207,7 +208,7 @@ namespace Apache.Ignite.Core.Impl.Common
                 else
                 {
                     // Nested object (complex property)
-                    prop.SetValue(target, ReadComplexProperty(reader, propType, prop.Name, targetType), null);
+                    prop.SetValue(target, ReadComplexProperty(reader, propType, prop.Name, targetType, resolver), null);
                 }
             }
         }
@@ -215,7 +216,8 @@ namespace Apache.Ignite.Core.Impl.Common
         /// <summary>
         /// Reads the complex property (nested object).
         /// </summary>
-        private static object ReadComplexProperty(XmlReader reader, Type propType, string propName, Type targetType)
+        private static object ReadComplexProperty(XmlReader reader, Type propType, string propName, Type targetType, 
+            TypeResolver resolver)
         {
             if (propType.IsAbstract)
             {
@@ -225,7 +227,7 @@ namespace Apache.Ignite.Core.Impl.Common
 
                 propType = typeName == null
                     ? null
-                    : Type.GetType(typeName, false) ?? derivedTypes.FirstOrDefault(x => x.Name == typeName);
+                    : resolver.ResolveType(typeName) ?? derivedTypes.FirstOrDefault(x => x.Name == typeName);
 
                 if (propType == null)
                 {
@@ -249,7 +251,7 @@ namespace Apache.Ignite.Core.Impl.Common
             {
                 subReader.Read();  // read first element
 
-                ReadElement(subReader, nestedVal);
+                ReadElement(subReader, nestedVal, resolver);
             }
 
             return nestedVal;
@@ -258,7 +260,8 @@ namespace Apache.Ignite.Core.Impl.Common
         /// <summary>
         /// Reads the collection.
         /// </summary>
-        private static void ReadCollectionProperty(XmlReader reader, PropertyInfo prop, object target)
+        private static void ReadCollectionProperty(XmlReader reader, PropertyInfo prop, object target, 
+            TypeResolver resolver)
         {
             var elementType = prop.PropertyType.GetGenericArguments().Single();
 
@@ -283,7 +286,7 @@ namespace Apache.Ignite.Core.Impl.Common
 
                     list.Add(converter != null
                         ? converter.ConvertFromInvariantString(subReader.ReadString())
-                        : ReadComplexProperty(subReader, elementType, prop.Name, target.GetType()));
+                        : ReadComplexProperty(subReader, elementType, prop.Name, target.GetType(), resolver));
                 }
             }