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 DB116200C49 for ; Fri, 17 Mar 2017 15:50:01 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id D9381160B9E; Fri, 17 Mar 2017 14:50:01 +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 35C1D160B93 for ; Fri, 17 Mar 2017 15:50:01 +0100 (CET) Received: (qmail 29770 invoked by uid 500); 17 Mar 2017 14:50:00 -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 29456 invoked by uid 99); 17 Mar 2017 14:49:59 -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; Fri, 17 Mar 2017 14:49:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B9F0ADFF7C; Fri, 17 Mar 2017 14:49:58 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.apache.org Date: Fri, 17 Mar 2017 14:50:01 -0000 Message-Id: <4e58a702aec44894a128a96746f18fbe@git.apache.org> In-Reply-To: <006260e355bd43ad8a6f1f328c7a60ab@git.apache.org> References: <006260e355bd43ad8a6f1f328c7a60ab@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [04/16] ignite git commit: IGNITE-4825 Inject resources from platform plugins archived-at: Fri, 17 Mar 2017 14:50:02 -0000 IGNITE-4825 Inject resources from platform plugins Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4820c458 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4820c458 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4820c458 Branch: refs/heads/ignite-4565-ddl Commit: 4820c458fde5d641c114b2fda94061abe452a2d0 Parents: 8e5e3cb Author: Pavel Tupitsyn Authored: Wed Mar 15 17:41:41 2017 +0300 Committer: Pavel Tupitsyn Committed: Wed Mar 15 17:41:41 2017 +0300 ---------------------------------------------------------------------- .../Plugin/PluginTest.cs | 24 ++++++++++++++++++++ .../Impl/Plugin/PluginContext.cs | 9 ++++++++ .../Apache.Ignite.Core/Plugin/IPluginContext.cs | 8 +++++++ 3 files changed, 41 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4820c458/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Plugin/PluginTest.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Plugin/PluginTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Plugin/PluginTest.cs index 8256bba..7e766a0 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Plugin/PluginTest.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Plugin/PluginTest.cs @@ -25,6 +25,7 @@ namespace Apache.Ignite.Core.Tests.Plugin using Apache.Ignite.Core.Common; using Apache.Ignite.Core.Interop; using Apache.Ignite.Core.Plugin; + using Apache.Ignite.Core.Resource; using NUnit.Framework; /// @@ -67,6 +68,7 @@ namespace Apache.Ignite.Core.Tests.Plugin Assert.IsNotNull(ctx.Ignite); Assert.AreEqual(cfg, ctx.IgniteConfiguration); Assert.AreEqual("barbaz", ctx.PluginConfiguration.PluginProperty); + CheckResourceInjection(ctx); var plugin2 = ignite.GetPlugin(TestIgnitePluginProvider.PluginName); Assert.AreEqual(plugin, plugin2); @@ -82,6 +84,21 @@ namespace Apache.Ignite.Core.Tests.Plugin } /// + /// Checks the resource injection. + /// + private static void CheckResourceInjection(IPluginContext ctx) + { + var obj = new Injectee(); + + Assert.IsNull(obj.Ignite); + + ctx.InjectResources(obj); + + Assert.IsNotNull(obj.Ignite); + Assert.AreEqual(ctx.Ignite.Name, obj.Ignite.Name); + } + + /// /// Checks the plugin target operations. /// private static void CheckPluginTarget(IPlatformTarget target, string expectedName, @@ -314,5 +331,12 @@ namespace Apache.Ignite.Core.Tests.Plugin PluginLog.Add(Name + ".Start"); } } + + private class Injectee + { + [InstanceResource] + // ReSharper disable once UnusedAutoPropertyAccessor.Local + public IIgnite Ignite { get; set; } + } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/4820c458/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Plugin/PluginContext.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Plugin/PluginContext.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Plugin/PluginContext.cs index fd7033c..cc20cb3 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Plugin/PluginContext.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Plugin/PluginContext.cs @@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Impl.Plugin { using Apache.Ignite.Core.Common; using Apache.Ignite.Core.Impl.Common; + using Apache.Ignite.Core.Impl.Resource; using Apache.Ignite.Core.Impl.Unmanaged; using Apache.Ignite.Core.Interop; using Apache.Ignite.Core.Plugin; @@ -87,5 +88,13 @@ namespace Apache.Ignite.Core.Impl.Plugin _pluginProcessor.RegisterCallback(callbackId, callback); } + + /** */ + public void InjectResources(object target) + { + IgniteArgumentCheck.NotNull(target, "target"); + + ResourceProcessor.Inject(target, _pluginProcessor.Ignite); + } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/4820c458/modules/platforms/dotnet/Apache.Ignite.Core/Plugin/IPluginContext.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Plugin/IPluginContext.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Plugin/IPluginContext.cs index 03d130b..9349611 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Plugin/IPluginContext.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Plugin/IPluginContext.cs @@ -19,6 +19,7 @@ namespace Apache.Ignite.Core.Plugin { using Apache.Ignite.Core.Common; using Apache.Ignite.Core.Interop; + using Apache.Ignite.Core.Resource; /// /// Plugin execution context. @@ -64,5 +65,12 @@ namespace Apache.Ignite.Core.Plugin /// Callback id. /// Callback delegate. void RegisterCallback(long callbackId, PluginCallback callback); + + /// + /// Injects resources into specified target: + /// populates members marked with . + /// + /// Target object. + void InjectResources(object target); } } \ No newline at end of file