You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2016/06/16 12:20:49 UTC

ignite git commit: IGNITE-3311 .NET: Include configuration schema in NuGet package

Repository: ignite
Updated Branches:
  refs/heads/master 277480c29 -> cc58eb0d5


IGNITE-3311 .NET: Include configuration schema in NuGet package

This closes #803


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

Branch: refs/heads/master
Commit: cc58eb0d51016872c7de99465b3536f68aa966a3
Parents: 277480c
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Thu Jun 16 15:20:41 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Thu Jun 16 15:20:41 2016 +0300

----------------------------------------------------------------------
 .../Apache.Ignite.Core.Tests.NuGet.csproj       |  6 ++
 .../SchemaTest.cs                               | 62 ++++++++++++++++++++
 .../install-package.ps1                         | 21 +++++--
 .../packages.config                             |  1 +
 .../Apache.Ignite.Core.Schema.nuspec            | 53 +++++++++++++++++
 .../Apache.Ignite.Core.csproj                   |  1 +
 6 files changed, 138 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/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
index af3037c..22a203e 100644
--- 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
@@ -93,9 +93,11 @@
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="ComputeTest.cs" />
+    <Compile Include="SchemaTest.cs" />
     <Compile Include="StartupTest.cs" />
     <Compile Include="CacheTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -109,6 +111,10 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="Apache.Ignite.Core.Tests.NuGet.sln.DotSettings" />
+    <Content Include="IgniteConfigurationSection.xsd">
+      <SubType>Designer</SubType>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
     <None Include="install-package.ps1" />
     <None Include="NuGet.config" />
     <None Include="packages.config">

http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/SchemaTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/SchemaTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/SchemaTest.cs
new file mode 100644
index 0000000..ac48619
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/SchemaTest.cs
@@ -0,0 +1,62 @@
+\ufeff/*
+ * 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.IO;
+    using System.Xml;
+    using System.Xml.Schema;
+    using NUnit.Framework;
+
+    /// <summary>
+    /// Tests the Apache.Ignite.Schema package.
+    /// </summary>
+    public class SchemaTest
+    {
+        /// <summary>
+        /// Tests that schema exists and validates XML config properly..
+        /// </summary>
+        [Test]
+        public void TestSchemavalidation()
+        {
+            Assert.IsTrue(File.Exists("IgniteConfigurationSection.xsd"));
+
+            // Valid schema
+            CheckSchemaValidation(@"<igniteConfiguration xmlns='http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection' gridName='myGrid'><binaryConfiguration /></igniteConfiguration>");
+
+            // Invalid schema
+            Assert.Throws<XmlSchemaValidationException>(() => CheckSchemaValidation(
+                @"<igniteConfiguration xmlns='http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection' invalidAttr='myGrid' />"));
+        }
+
+        /// <summary>
+        /// Checks the schema validation.
+        /// </summary>
+        /// <param name="xml">The XML.</param>
+        private static void CheckSchemaValidation(string xml)
+        {
+            var document = new XmlDocument();
+
+            document.Schemas.Add("http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection",
+                XmlReader.Create("IgniteConfigurationSection.xsd"));
+
+            document.Load(new StringReader(xml));
+
+            document.Validate(null);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.ps1
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.ps1 b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.ps1
index 01c0be4..3289918 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.ps1
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/install-package.ps1
@@ -4,16 +4,19 @@ if (!(Test-Path $ng)) {
     $ng = 'nuget'
 }
 
+$cfg = 'Release'
+$ver = (gi ..\Apache.Ignite.Core\bin\$cfg\Apache.Ignite.Core.dll).VersionInfo.ProductVersion
+
 rmdir nupkg -Force -Recurse
 rmdir pkg -Force -Recurse
 
 mkdir nupkg
 mkdir pkg
 
-& $ng pack ..\Apache.Ignite.Core\Apache.Ignite.Core.csproj -Prop Configuration=Release -OutputDirectory nupkg
-& $ng pack ..\Apache.Ignite.Linq\Apache.Ignite.Linq.csproj -Prop Configuration=Release -OutputDirectory nupkg
-
-$ver = (Get-ChildItem nupkg\Apache.Ignite.Linq*)[0].Name -replace '\D+([\d.]+)\.\D+','$1'
+# Find all nuspec files and run 'nuget pack' either directly, or on corresponding csproj files (if present).
+ls ..\*.nuspec -Recurse  `
+    | % { If (Test-Path ([io.path]::ChangeExtension($_.FullName, ".csproj"))){[io.path]::ChangeExtension($_.FullName, ".csproj")} Else {$_.FullName}  } `
+    | % { & $ng pack $_ -Prop Configuration=$cfg -Version $ver -Prop Platform=AnyCPU -OutputDirectory nupkg }
 
 # Replace versions in project files
 (Get-Content packages.config) `
@@ -21,5 +24,11 @@ $ver = (Get-ChildItem nupkg\Apache.Ignite.Linq*)[0].Name -replace '\D+([\d.]+)\.
     | Out-File packages.config -Encoding utf8
 
 (Get-Content Apache.Ignite.Core.Tests.NuGet.csproj) `
-    -replace '<HintPath>packages\\Apache.Ignite(.*?)\.[\d.]+\\', ('<HintPath>packages\Apache.Ignite$1.' + "$ver\") `
-    | Out-File Apache.Ignite.Core.Tests.NuGet.csproj  -Encoding utf8
\ No newline at end of file
+    -replace 'packages\\Apache.Ignite(.*?)\.\d.*?\\', ('packages\Apache.Ignite$1.' + "$ver\") `
+    | Out-File Apache.Ignite.Core.Tests.NuGet.csproj  -Encoding utf8
+
+# restore packages
+& $ng restore
+
+# refresh content files
+ls packages\*\content | % {copy ($_.FullName + "\*.*") .\ }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
index de80824..edf80de 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests.NuGet/packages.config
@@ -20,5 +20,6 @@
 <packages>
   <package id="Apache.Ignite" version="1.6.0" targetFramework="net40" />
   <package id="Apache.Ignite.Linq" version="1.6.0" targetFramework="net40" />
+  <package id="Apache.Ignite.Schema" version="1.6.0" targetFramework="net40" />
   <package id="Remotion.Linq" version="2.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.Schema.nuspec
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.Schema.nuspec b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.Schema.nuspec
new file mode 100644
index 0000000..367bdd5
--- /dev/null
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.Schema.nuspec
@@ -0,0 +1,53 @@
+<?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:
+nuget pack Apache.Ignite.Schema.nuspec -Version 1.6.1
+
+-->
+
+<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
+    <metadata>
+        <id>Apache.Ignite.Schema</id>
+        <title>Apache Ignite Configuration XML Schema</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>
+        <summary>Enables Intellisense(TM) when editing IgniteConfigurationSection in app.config and web.config.</summary>
+        <description>
+XSD file describes the structure of IgniteConfigurationSection and enables Intellisense(TM) when editing IgniteConfigurationSection in app.config and web.config in Visual Studio.
+
+More info on Apache Ignite.NET: https://apacheignite-net.readme.io/
+        </description>
+        <releaseNotes></releaseNotes>
+        <copyright>Copyright 2016</copyright>
+        <tags>Apache Ignite XSD Intellisense</tags>
+    </metadata>
+    <files>
+        <!-- Other files should go to Content folder to be automatically included in project. -->
+        <file src="IgniteConfigurationSection.xsd" target="content" />
+    </files>
+</package>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cc58eb0d/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 649de2e..10971d9 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj
@@ -484,6 +484,7 @@
   <ItemGroup>
     <None Include="Apache.Ignite.Core.ruleset" />
     <None Include="Apache.Ignite.Core.nuspec" />
+    <None Include="Apache.Ignite.Core.Schema.nuspec" />
     <None Include="build-common.ps1" />
     <None Include="NuGet\Uninstall.ps1" />
     <None Include="NuGet\PostBuild.ps1" />