You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/02/20 10:16:47 UTC
[05/12] ignite git commit: IGNITE-1626 : .NET: Added NuGet support.
This closes #342.
IGNITE-1626 : .NET: Added NuGet support. This closes #342.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/88429f2e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/88429f2e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/88429f2e
Branch: refs/heads/ignite-1786
Commit: 88429f2ecd82b4d9b92521dc9422ff5cc445dcdf
Parents: 1463311
Author: Pavel Tupitsyn <pt...@gridgain.com>
Authored: Fri Feb 19 16:54:29 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Fri Feb 19 16:54:29 2016 +0300
----------------------------------------------------------------------
.gitignore | 1 +
.../Apache.Ignite.Core.Tests.NuGet.csproj | 103 ++++++++++++++++++
.../Apache.Ignite.Core.Tests.NuGet.sln | 26 +++++
...ache.Ignite.Core.Tests.NuGet.sln.DotSettings | 4 +
.../Apache.Ignite.Core.Tests.NuGet/CacheTest.cs | 107 +++++++++++++++++++
.../ComputeTest.cs | 84 +++++++++++++++
.../Config/ignite-config.xml | 50 +++++++++
.../Apache.Ignite.Core.Tests.NuGet/NuGet.config | 34 ++++++
.../Properties/AssemblyInfo.cs | 35 ++++++
.../StartupTest.cs | 66 ++++++++++++
.../TestRunner.cs | 70 ++++++++++++
.../Apache.Ignite.Core.Tests.NuGet/TestUtil.cs | 43 ++++++++
.../install-package.cmd | 3 +
.../Apache.Ignite.Core.csproj | 4 +
.../Apache.Ignite.Core.nuspec | 80 ++++++++++++++
.../Impl/Common/IgniteHome.cs | 11 +-
.../dotnet/Apache.Ignite.Core/NuGet/Install.ps1 | 44 ++++++++
.../NuGet/LINQPad/ComputeExample.linq | 106 ++++++++++++++++++
.../NuGet/LINQPad/PutGetExample.linq | 69 ++++++++++++
.../NuGet/LINQPad/QueryExample.linq | 96 +++++++++++++++++
.../Apache.Ignite.Core/NuGet/PostBuild.ps1 | 20 ++++
.../Apache.Ignite.Core/NuGet/Uninstall.ps1 | 21 ++++
parent/pom.xml | 2 +
23 files changed, 1075 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 4073a58..5268e18 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@ git-patch-prop-local.sh
**/cpp/**/vs/x64/
**/cpp/**/vs/Win32/
**/dotnet/**/obj/
+**/dotnet/**/bin/
/modules/platforms/cpp/doc/
.settings
.classpath
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
new file mode 100644
index 0000000..4283de4
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.csproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x64</Platform>
+ <ProjectGuid>{134707F6-155D-47F6-9EB2-C67ABBF3C009}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Apache.Ignite.Core.Tests.NuGet</RootNamespace>
+ <AssemblyName>Apache.Ignite.Core.Tests.NuGet</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>bin\x64\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject>Apache.Ignite.Core.Tests.NuGet.TestRunner</StartupObject>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Apache.Ignite.Core">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>pkg\lib\net40\Apache.Ignite.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit-console-runner">
+ <HintPath>..\libs\nunit-console-runner.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\libs\nunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="ComputeTest.cs" />
+ <Compile Include="StartupTest.cs" />
+ <Compile Include="CacheTest.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TestRunner.cs" />
+ <Compile Include="TestUtil.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Config\ignite-config.xml">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Apache.Ignite.Core.Tests.NuGet.sln.DotSettings" />
+ <None Include="install-package.cmd" />
+ <None Include="NuGet.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PostBuildEvent>if not exist $(TargetDir)Libs md $(TargetDir)Libs
+xcopy /s /y $(ProjectDir)pkg\Libs $(TargetDir)Libs</PostBuildEvent>
+ </PropertyGroup>
+ <PropertyGroup>
+ <PreBuildEvent>cd $(ProjectDir)
+if not exist pkg install-package.cmd</PreBuildEvent>
+ </PropertyGroup>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln
new file mode 100644
index 0000000..1c79873
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core.Tests.NuGet", "Apache.Ignite.Core.Tests.NuGet.csproj", "{134707F6-155D-47F6-9EB2-C67ABBF3C009}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Debug|x64.ActiveCfg = Debug|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Debug|x64.Build.0 = Debug|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Debug|x86.ActiveCfg = Debug|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Debug|x86.Build.0 = Debug|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Release|x64.ActiveCfg = Release|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Release|x64.Build.0 = Release|x64
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Release|x86.ActiveCfg = Release|x86
+ {134707F6-155D-47F6-9EB2-C67ABBF3C009}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln.DotSettings
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln.DotSettings b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln.DotSettings
new file mode 100644
index 0000000..187a909
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Apache.Ignite.Core.Tests.NuGet.sln.DotSettings
@@ -0,0 +1,4 @@
+<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+ <s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/AddImportsToDeepestScope/@EntryValue">True</s:Boolean>
+
+ <s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/QualifiedUsingAtNestedScope/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/CacheTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/CacheTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/CacheTest.cs
new file mode 100644
index 0000000..ba0487b
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/CacheTest.cs
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// ReSharper disable UnusedAutoPropertyAccessor.Local
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using System.Linq;
+ using Apache.Ignite.Core.Binary;
+ using Apache.Ignite.Core.Cache.Configuration;
+ using Apache.Ignite.Core.Cache.Query;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// Cache test.
+ /// </summary>
+ public class CacheTest
+ {
+ /// <summary>
+ /// Fixture set up.
+ /// </summary>
+ [TestFixtureSetUp]
+ public void FixtureSetUp()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ DiscoverySpi = TestUtil.GetLocalDiscoverySpi(),
+ BinaryConfiguration = new BinaryConfiguration(typeof(Person))
+ };
+
+ Ignition.Start(cfg);
+ }
+
+ /// <summary>
+ /// Fixture tear down.
+ /// </summary>
+ [TestFixtureTearDown]
+ public void FixtureTearDown()
+ {
+ Ignition.StopAll(true);
+ }
+
+ /// <summary>
+ /// Tests cache put/get.
+ /// </summary>
+ [Test]
+ public void TestPutGet()
+ {
+ var ignite = Ignition.GetIgnite();
+
+ var cache = ignite.CreateCache<int, int>("cache");
+
+ cache[1] = 5;
+
+ Assert.AreEqual(5, cache[1]);
+ }
+
+ /// <summary>
+ /// Tests the SQL.
+ /// </summary>
+ [Test]
+ public void TestSql()
+ {
+ var ignite = Ignition.GetIgnite();
+
+ var cache = ignite.GetOrCreateCache<int, Person>(new CacheConfiguration("sqlCache", typeof (Person)));
+
+ cache.PutAll(Enumerable.Range(1, 100).ToDictionary(x => x, x => new Person {Name = "Name" + x, Age = x}));
+
+ var sqlRes = cache.Query(new SqlQuery(typeof (Person), "age < ?", 30)).GetAll();
+
+ Assert.AreEqual(29, sqlRes.Count);
+ Assert.IsTrue(sqlRes.All(x => x.Value.Age < 30));
+ }
+
+ /// <summary>
+ /// Query class.
+ /// </summary>
+ private class Person
+ {
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ [QuerySqlField]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Gets or sets the age.
+ /// </summary>
+ [QuerySqlField]
+ public int Age { get; set; }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/ComputeTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/ComputeTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/ComputeTest.cs
new file mode 100644
index 0000000..53764f7
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/ComputeTest.cs
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// ReSharper disable UnusedAutoPropertyAccessor.Local
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using System;
+ using Apache.Ignite.Core.Compute;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// Compute test.
+ /// </summary>
+ public class ComputeTest
+ {
+ /// <summary>
+ /// Fixture set up.
+ /// </summary>
+ [TestFixtureSetUp]
+ public void FixtureSetUp()
+ {
+ Ignition.Start(new IgniteConfiguration
+ {
+ DiscoverySpi = TestUtil.GetLocalDiscoverySpi(),
+ });
+ }
+
+ /// <summary>
+ /// Fixture tear down.
+ /// </summary>
+ [TestFixtureTearDown]
+ public void FixtureTearDown()
+ {
+ Ignition.StopAll(true);
+ }
+
+ /// <summary>
+ /// Tests cache put/get.
+ /// </summary>
+ [Test]
+ public void TestCompute()
+ {
+ var ignite = Ignition.GetIgnite();
+
+ var compute = ignite.GetCompute();
+
+ ComputeAction.RunCount = 0;
+
+ compute.Broadcast(new ComputeAction());
+
+ Assert.AreEqual(1, ComputeAction.RunCount);
+ }
+
+ /// <summary>
+ /// Test action.
+ /// </summary>
+ [Serializable]
+ private class ComputeAction : IComputeAction
+ {
+ /// <summary> The run count. </summary>
+ public static volatile int RunCount;
+
+ /** <inheritdoc /> */
+ public void Invoke()
+ {
+ RunCount++;
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Config/ignite-config.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Config/ignite-config.xml b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Config/ignite-config.xml
new file mode 100644
index 0000000..3f8f5f9
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Config/ignite-config.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+ <bean class="org.apache.ignite.configuration.IgniteConfiguration">
+ <property name="localHost" value="127.0.0.1" />
+
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="ipFinder">
+ <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
+ <property name="addresses">
+ <list>
+ <value>127.0.0.1:47500..47502</value>
+ </list>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
+
+ <property name="cacheConfiguration">
+ <list>
+ <bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="testcache"/>
+ <property name="startSize" value="10"/>
+ </bean>
+ </list>
+ </property>
+ </bean>
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NuGet.config
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NuGet.config b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NuGet.config
new file mode 100644
index 0000000..5099ff0
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/NuGet.config
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<configuration>
+ <packageRestore>
+ <!-- Allow NuGet to download missing packages -->
+ <add key="enabled" value="True" />
+ <!-- Automatically check for missing packages during build in Visual Studio -->
+ <add key="automatic" value="True" />
+ </packageRestore>
+ <packageSources>
+ <add key="ParentFolder" value="..\" />
+ </packageSources>
+ <!-- Used to specify which one of the sources are active -->
+ <activePackageSource>
+ <add key="ParentFolder" value="..\" />
+ </activePackageSource>
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Properties/AssemblyInfo.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b270b5e
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Apache.Ignite.Core.Tests.NuGet")]
+[assembly: AssemblyDescription("Apache Ignite.NET NuGet tests")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Software Foundation")]
+[assembly: AssemblyProduct("Apache Ignite.NET")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+[assembly: Guid("134707f6-155d-47f6-9eb2-c67abbf3c009")]
+
+[assembly: AssemblyVersion("1.6.0.8653")]
+[assembly: AssemblyFileVersion("1.6.0.8653")]
+[assembly: AssemblyInformationalVersion("1.6.0")]
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
new file mode 100644
index 0000000..5b38bde
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/StartupTest.cs
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using Apache.Ignite.Core.Cache.Configuration;
+ using NUnit.Framework;
+
+ /// <summary>
+ /// Cache test.
+ /// </summary>
+ public class StartupTest
+ {
+ /// <summary>
+ /// Tests code configuration.
+ /// </summary>
+ [Test]
+ public void TestCodeConfig()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ DiscoverySpi = TestUtil.GetLocalDiscoverySpi(),
+ CacheConfiguration = new[] {new CacheConfiguration("testcache")}
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ var cache = ignite.GetCache<int, int>("testcache");
+
+ cache[1] = 5;
+
+ Assert.AreEqual(5, cache[1]);
+ }
+ }
+
+ /// <summary>
+ /// Tests code configuration.
+ /// </summary>
+ [Test]
+ public void TestSpringConfig()
+ {
+ using (var ignite = Ignition.Start("config\\ignite-config.xml"))
+ {
+ var cache = ignite.GetCache<int, int>("testcache");
+
+ cache[1] = 5;
+
+ Assert.AreEqual(5, cache[1]);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestRunner.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestRunner.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestRunner.cs
new file mode 100644
index 0000000..c5abcb7
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestRunner.cs
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using System;
+ using System.Diagnostics;
+ using System.Reflection;
+ using NUnit.ConsoleRunner;
+
+ /// <summary>
+ /// Console test runner
+ /// </summary>
+ public static class TestRunner
+ {
+ [STAThread]
+ static void Main()
+ {
+ Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
+ Debug.AutoFlush = true;
+
+ TestAllInAssembly();
+ }
+
+ private static void TestOne(Type testClass, string method)
+ {
+ string[] args = { "/run:" + testClass.FullName + "." + method, Assembly.GetAssembly(testClass).Location };
+
+ int returnCode = Runner.Main(args);
+
+ if (returnCode != 0)
+ Console.Beep();
+ }
+
+ private static void TestAll(Type testClass)
+ {
+ string[] args = { "/run:" + testClass.FullName, Assembly.GetAssembly(testClass).Location };
+
+ int returnCode = Runner.Main(args);
+
+ if (returnCode != 0)
+ Console.Beep();
+ }
+
+ private static void TestAllInAssembly()
+ {
+ string[] args = { Assembly.GetAssembly(typeof(CacheTest)).Location };
+
+ int returnCode = Runner.Main(args);
+
+ if (returnCode != 0)
+ Console.Beep();
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
new file mode 100644
index 0000000..43e5097
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/TestUtil.cs
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Core.Tests.NuGet
+{
+ using Apache.Ignite.Core.Discovery;
+ using Apache.Ignite.Core.Discovery.Tcp;
+ using Apache.Ignite.Core.Discovery.Tcp.Static;
+
+ /// <summary>
+ /// Test utils.
+ /// </summary>
+ public static class TestUtil
+ {
+ /// <summary>
+ /// Gets the local discovery spi.
+ /// </summary>
+ public static IDiscoverySpi GetLocalDiscoverySpi()
+ {
+ return new TcpDiscoverySpi
+ {
+ IpFinder = new TcpDiscoveryStaticIpFinder
+ {
+ Endpoints = new[] {"127.0.0.1:47500..47503"}
+ }
+ };
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.cmd
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.cmd b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.cmd
new file mode 100644
index 0000000..e1b57a8
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.cmd
@@ -0,0 +1,3 @@
+rmdir pkg /S /Q
+nuget install Apache.Ignite.NET
+move Apache.Ignite.NET* pkg
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
index 661040b..1b66f0c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
@@ -441,6 +441,10 @@
</ItemGroup>
<ItemGroup>
<None Include="Apache.Ignite.Core.ruleset" />
+ <None Include="Apache.Ignite.Core.nuspec" />
+ <None Include="NuGet\Uninstall.ps1" />
+ <None Include="NuGet\PostBuild.ps1" />
+ <None Include="NuGet\Install.ps1" />
<None Include="Apache.Ignite.Core.snk" />
<None Include="IgniteConfigurationSection.xsd">
<SubType>Designer</SubType>
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
new file mode 100644
index 0000000..54a4a9e
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.nuspec
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+
+Creating NuGet package:
+1) Build Java: mvn clean package -DskipTests -U -Plgpl
+2) Build Apache.Ignite.sln (x64 configuration)
+3) Create package (use csproj instead of nuspec so that template substitution works):
+ nuget pack Apache.Ignite.Core.csproj -Prop Configuration=Release -Prop Platform=x64
+
+-->
+
+<package >
+ <metadata>
+ <id>Apache.Ignite.NET</id>
+ <title>Apache Ignite.NET x64</title>
+ <!-- -->
+ <version>$version$</version>
+ <authors>Apache Ignite</authors>
+ <owners>Apache Software Foundation</owners>
+ <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
+ <projectUrl>https://ignite.apache.org/</projectUrl>
+ <iconUrl>https://ignite.apache.org/images/logo_ignite_32_32.png</iconUrl>
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
+ <description>
+Apache Ignite.NET In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies.
+
+More info: https://apacheignite-net.readme.io/
+
+WARNING: this only works with x64 build targets.
+ </description>
+ <summary>
+ High-performance in-memory platform for computing and transacting on large-scale data sets in real-time.
+ </summary>
+ <releaseNotes></releaseNotes>
+ <copyright>Copyright 2015</copyright>
+ <tags>Apache Ignite In-Memory Distributed Computing SQL NoSQL Grid Map Reduce Cache linqpad-samples</tags>
+ </metadata>
+ <files>
+ <!-- Dll will be included automatically in the lib folder. -->
+ <!--<file src="bin\x64\Release\*.dll" target="lib\net40" />-->
+
+ <!-- Install script should be in tools -->
+ <file src="NuGet\Install.ps1" target="tools" />
+ <file src="NuGet\Uninstall.ps1" target="tools" />
+ <file src="NuGet\PostBuild.ps1" target="tools" />
+
+ <!-- Other files should go to Content folder to be automatically included in project. -->
+ <!--<file src="..\..\..\..\config\default-config.xml" target="Content\Config" />-->
+
+ <!--
+ Library files (jars) should not be included in project, so that NuGet package restore works properly.
+ We keep jars in NuGet dir and copy them over in PostBuild event.
+ -->
+ <file src="..\..\..\..\target\release-package\libs\*.jar" target="Libs" />
+ <file src="..\..\..\..\target\release-package\libs\ignite-spring\*.jar" target="Libs" />
+ <file src="..\..\..\..\target\release-package\libs\ignite-indexing\*.jar" target="Libs" />
+ <file src="..\..\..\..\target\release-package\libs\licenses\*.*" target="Licenses" />
+
+ <!-- LINQPad samples -->
+ <file src="NuGet\LINQPad\*.*" target="linqpad-samples" />
+ </files>
+</package>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
index 335c55a..ebf5e0f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Common/IgniteHome.cs
@@ -78,7 +78,7 @@ namespace Apache.Ignite.Core.Impl.Common
}
}
- return null;
+ throw new IgniteException("Failed to resolve Ignite home.");
}
/// <summary>
@@ -89,9 +89,12 @@ namespace Apache.Ignite.Core.Impl.Common
private static bool IsIgniteHome(DirectoryInfo dir)
{
return dir.Exists &&
- dir.EnumerateDirectories().Count(x => x.Name == "examples" || x.Name == "bin") == 2 &&
- (dir.EnumerateDirectories().Count(x => x.Name == "modules") == 1 ||
- dir.EnumerateDirectories().Count(x => x.Name == "platforms") == 1);
+ (dir.EnumerateDirectories().Count(x => x.Name == "examples" || x.Name == "bin") == 2 &&
+ dir.EnumerateDirectories().Count(x => x.Name == "modules" || x.Name == "platforms") == 1)
+ || // NuGet home
+ (dir.EnumerateDirectories().Any(x => x.Name == "Libs") &&
+ (dir.EnumerateFiles("Apache.Ignite.Core.dll").Any() ||
+ dir.EnumerateFiles("Apache.Ignite.*.nupkg").Any()));
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Install.ps1
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Install.ps1 b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Install.ps1
new file mode 100644
index 0000000..c1c591b
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Install.ps1
@@ -0,0 +1,44 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+param($installPath, $toolsPath, $package, $project)
+
+Write-Host "Updating project properties..."
+
+Function SetProperties
+{
+ param ($projItem)
+
+ Write-Host $projItem.Name
+
+ $projItem.Properties.Item("CopyToOutputDirectory").Value = 2 # copy if newer
+}
+
+# Copy default config to output dir for user conveniece
+SetProperties $project.ProjectItems.Item("Config").ProjectItems.Item("default-config.xml")
+
+# ForEach ($item in $project.ProjectItems.Item("Libs").ProjectItems)
+# {
+# SetProperties $item
+# }
+
+. (Join-Path $toolsPath "PostBuild.ps1")
+
+# Get the current Post Build Event cmd
+$currentPostBuildCmd = $project.Properties.Item("PostBuildEvent").Value
+
+# Append our post build command if it's not already there
+if (!$currentPostBuildCmd.Contains($IgnitePostBuildCmd)) {
+ $project.Properties.Item("PostBuildEvent").Value += $IgnitePostBuildCmd
+}
+
+Write-Host "Welcome to Apache Ignite.NET!"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/ComputeExample.linq
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/ComputeExample.linq b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/ComputeExample.linq
new file mode 100644
index 0000000..194858c
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/ComputeExample.linq
@@ -0,0 +1,106 @@
+<Query Kind="Program">
+ <NuGetReference>Apache.Ignite.NET</NuGetReference>
+ <Namespace>Apache.Ignite.Core</Namespace>
+ <Namespace>Apache.Ignite.Core.Binary</Namespace>
+ <Namespace>Apache.Ignite.Core.Cache.Configuration</Namespace>
+ <Namespace>Apache.Ignite.Core.Cache.Query</Namespace>
+ <Namespace>Apache.Ignite.Core.Compute</Namespace>
+</Query>
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/// <summary>
+/// Example demonstrating closure execution.
+/// </summary>
+
+void Main()
+{
+ if (!Environment.Is64BitProcess)
+ throw new Exception("x64 LINQPad is required to run this sample (see AnyCPU build: http://www.linqpad.net/Download.aspx)");
+
+ // Force new LINQPad query process to reinit JVM
+ Util.NewProcess = true;
+
+ // Start instance
+ using (var ignite = Ignition.Start())
+ {
+ // Split the string by spaces to count letters in each word in parallel.
+ var words = "Count characters using closure".Split();
+
+ var res = ignite.GetCompute().Apply(new CharacterCountClosure(), words);
+
+ int totalLen = res.Sum(); // reduce manually
+
+ totalLen.Dump("Total character count with manual reduce");
+
+ totalLen = ignite.GetCompute().Apply(new CharacterCountClosure(), words, new CharacterCountReducer());
+
+ totalLen.Dump("Total character count with reducer");
+ }
+}
+
+/// <summary>
+/// Closure counting characters in a string.
+/// </summary>
+[Serializable]
+public class CharacterCountClosure : IComputeFunc<string, int>
+{
+ /// <summary>
+ /// Calculate character count of the given word.
+ /// </summary>
+ /// <param name="arg">Word.</param>
+ /// <returns>Character count.</returns>
+ public int Invoke(string arg)
+ {
+ int len = arg.Length;
+
+ Console.WriteLine("Character count in word \"" + arg + "\": " + len);
+
+ return len;
+ }
+}
+
+/// <summary>
+/// Character count reducer which collects individual string lengths and aggregate them.
+/// </summary>
+public class CharacterCountReducer : IComputeReducer<int, int>
+{
+ /// <summary> Total length. </summary>
+ private int _length;
+
+ /// <summary>
+ /// Collect character counts of distinct words.
+ /// </summary>
+ /// <param name="res">Character count of a distinct word.</param>
+ /// <returns><c>True</c> to continue collecting results until all closures are finished.</returns>
+ public bool Collect(int res)
+ {
+ _length += res;
+
+ return true;
+ }
+
+ /// <summary>
+ /// Reduce all collected results.
+ /// </summary>
+ /// <returns>Total character count.</returns>
+ public int Reduce()
+ {
+ return _length;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/PutGetExample.linq
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/PutGetExample.linq b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/PutGetExample.linq
new file mode 100644
index 0000000..0569da6
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/PutGetExample.linq
@@ -0,0 +1,69 @@
+<Query Kind="Program">
+ <NuGetReference>Apache.Ignite.NET</NuGetReference>
+ <Namespace>Apache.Ignite.Core</Namespace>
+ <Namespace>Apache.Ignite.Core.Binary</Namespace>
+</Query>
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/// <summary>
+/// This example demonstrates put-get operations on Ignite cache
+/// with binary values. Note that binary object can be retrieved in
+/// fully-deserialized form or in binary object format using special
+/// cache projection.
+/// </summary>
+
+void Main()
+{
+ if (!Environment.Is64BitProcess)
+ throw new Exception("x64 LINQPad is required to run this sample (see AnyCPU build: http://www.linqpad.net/Download.aspx)");
+
+ // Force new LINQPad query process to reinit JVM
+ Util.NewProcess = true;
+
+ // Configure cacheable types
+ var cfg = new IgniteConfiguration {BinaryConfiguration = new BinaryConfiguration(typeof(Organization))};
+
+ // Start instance
+ using (var ignite = Ignition.Start(cfg))
+ {
+ // Create new cache
+ var cache = ignite.CreateCache<int, Organization>("orgs");
+
+ // Put data entry to cache
+ cache.Put(1, new Organization {Name = "Apache", Type="Private"});
+
+ // Retrieve data entry in fully deserialized form
+ cache.Get(1).Dump("Retrieved organization instance from cache");
+
+ // Create projection that will get values as binary objects
+ var binaryCache = cache.WithKeepBinary<int, IBinaryObject>();
+
+ // Get recently created organization as a binary object
+ var binaryOrg = binaryCache.Get(1);
+
+ // Get organization's name from binary object (note that object doesn't need to be fully deserialized)
+ binaryOrg.GetField<string>("name").Dump("Retrieved organization name from binary object");
+ }
+}
+
+public class Organization
+{
+ public string Name { get; set; }
+
+ public string Type { get; set; }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/QueryExample.linq
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/QueryExample.linq b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/QueryExample.linq
new file mode 100644
index 0000000..b13e1e9
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/LINQPad/QueryExample.linq
@@ -0,0 +1,96 @@
+<Query Kind="Program">
+ <NuGetReference>Apache.Ignite.NET</NuGetReference>
+ <Namespace>Apache.Ignite.Core</Namespace>
+ <Namespace>Apache.Ignite.Core.Binary</Namespace>
+ <Namespace>Apache.Ignite.Core.Cache.Configuration</Namespace>
+ <Namespace>Apache.Ignite.Core.Cache.Query</Namespace>
+</Query>
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/// <summary>
+/// This example demonstrates put-get operations on Ignite cache
+/// with binary values. Note that binary object can be retrieved in
+/// fully-deserialized form or in binary object format using special
+/// cache projection.
+/// </summary>
+
+void Main()
+{
+ if (!Environment.Is64BitProcess)
+ throw new Exception("x64 LINQPad is required to run this sample (see AnyCPU build: http://www.linqpad.net/Download.aspx)");
+
+ // Force new LINQPad query process to reinit JVM
+ Util.NewProcess = true;
+
+ // Configure cacheable types
+ var cfg = new IgniteConfiguration { BinaryConfiguration = new BinaryConfiguration(typeof(Organization), typeof(Person)) };
+
+ // Start instance
+ using (var ignite = Ignition.Start(cfg))
+ {
+ // Create and populate organization cache
+ var orgs = ignite.GetOrCreateCache<int, Organization>(new CacheConfiguration("orgs",
+ new QueryEntity(typeof(int), typeof(Organization))));
+ orgs[1] = new Organization { Name = "Apache", Type = "Private", Size = 5300 };
+ orgs[2] = new Organization { Name = "Microsoft", Type = "Private", Size = 110000 };
+ orgs[3] = new Organization { Name = "Red Cross", Type = "Non-Profit", Size = 35000 };
+
+ // Create and populate person cache
+ var persons = ignite.CreateCache<int, Person>(new CacheConfiguration("persons", typeof(Person)));
+ persons[1] = new Person { OrgId = 1, Name = "James Wilson" };
+ persons[2] = new Person { OrgId = 1, Name = "Daniel Adams" };
+ persons[3] = new Person { OrgId = 2, Name = "Christian Moss" };
+ persons[4] = new Person { OrgId = 3, Name = "Allison Mathis" };
+ persons[5] = new Person { OrgId = 3, Name = "Christopher Adams" };
+
+ // SQL query
+ orgs.Query(new SqlQuery(typeof(Organization), "size < ?", 100000)).Dump("Organizations with size less than 100K");
+
+ // SQL query with join
+ const string orgName = "Apache";
+ persons.Query(new SqlQuery(typeof(Person), "from Person, \"orgs\".Organization where Person.OrgId = \"orgs\".Organization._key and \"orgs\".Organization.Name = ?", orgName))
+ .Dump("Persons working for " + orgName);
+
+ // Fields query
+ orgs.QueryFields(new SqlFieldsQuery("select name, size from Organization")).Dump("Fields query");
+
+ // Full text query
+ persons.Query(new TextQuery(typeof(Person), "Chris*")).Dump("Persons starting with 'Chris'");
+ }
+}
+
+public class Organization
+{
+ [QuerySqlField]
+ public string Name { get; set; }
+
+ public string Type { get; set; }
+
+ [QuerySqlField]
+ public int Size { get; set;}
+}
+
+public class Person
+{
+ [QueryTextField]
+ public string Name { get; set; }
+
+ [QuerySqlField]
+ public int OrgId { get; set; }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/PostBuild.ps1
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/PostBuild.ps1 b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/PostBuild.ps1
new file mode 100644
index 0000000..ed111d1
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/PostBuild.ps1
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+$solutionDir = [System.IO.Path]::GetDirectoryName($dte.Solution.FullName) + "\"
+$path = $installPath.Replace($solutionDir, "`$(SolutionDir)")
+
+$Jars = Join-Path $path "Libs\*.*"
+
+$IgnitePostBuildCmd = "
+if not exist `"`$(TargetDir)Libs`" md `"`$(TargetDir)Libs`"
+xcopy /s /y `"$Jars`" `"`$(TargetDir)Libs`""
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Uninstall.ps1
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Uninstall.ps1 b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Uninstall.ps1
new file mode 100644
index 0000000..f81f41c
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/NuGet/Uninstall.ps1
@@ -0,0 +1,21 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+param($installPath, $toolsPath, $package, $project)
+
+. (Join-Path $toolsPath "PostBuild.ps1")
+
+# Get the current Post Build Event cmd
+$currentPostBuildCmd = $project.Properties.Item("PostBuildEvent").Value
+
+# Remove our post build command from it (if it's there)
+$project.Properties.Item("PostBuildEvent").Value = $currentPostBuildCmd.Replace($IgnitePostBuildCmd, "")
http://git-wip-us.apache.org/repos/asf/ignite/blob/88429f2e/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index e189807..9d6c39f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -860,6 +860,8 @@
<exclude>**/bin/x64/**</exclude>
<exclude>**/bin/x86/**</exclude>
<exclude>**/*.dxg</exclude>
+ <exclude>**/*.cmd</exclude>
+ <exclude>**/*.ps1</exclude>
</excludes>
</configuration>
</execution>