Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 8ADF5200B9F for ; Mon, 26 Sep 2016 14:13:21 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 897BF160AC8; Mon, 26 Sep 2016 12:13:21 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 92211160AE6 for ; Mon, 26 Sep 2016 14:13:18 +0200 (CEST) Received: (qmail 61239 invoked by uid 500); 26 Sep 2016 12:13:17 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 60584 invoked by uid 99); 26 Sep 2016 12:13:16 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Sep 2016 12:13:16 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CB2E4DFA44; Mon, 26 Sep 2016 12:13:16 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ptupitsyn@apache.org To: commits@ignite.apache.org Date: Mon, 26 Sep 2016 12:14:02 -0000 Message-Id: <3cb8e63993fd4c5ab32eee2a8d9314a7@git.apache.org> In-Reply-To: <12075e2a79df4fd8bcb41f7ed71166f8@git.apache.org> References: <12075e2a79df4fd8bcb41f7ed71166f8@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [48/50] ignite git commit: IGNITE-3491 .NET: Allow type name without assembly for type properties in app.config archived-at: Mon, 26 Sep 2016 12:13:21 -0000 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/master Commit: 33a6878eccd60f86648067901613b713ef3bb71f Parents: 8032fc2 Author: Pavel Tupitsyn Authored: Mon Sep 26 14:56:51 2016 +0300 Committer: Pavel Tupitsyn 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 = @" 127.1.1.1 - + Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+FooClass, Apache.Ignite.Core.Tests @@ -70,7 +70,7 @@ namespace Apache.Ignite.Core.Tests -Xms1g-Xmx4g - + 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; /// @@ -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 /// /// Reads the element. /// - 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 /// /// Reads the complex property (nested object). /// - 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 /// /// Reads the collection. /// - 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)); } }