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

[16/50] ignite git commit: IGNITE-3709 .NET: Support primitive type names in QueryEntity

IGNITE-3709 .NET: Support primitive type names in QueryEntity


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

Branch: refs/heads/ignite-3443
Commit: f0c3b343e4870ee6cbc2e150ffc2afe9e5ce29af
Parents: 4b87830
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Fri Aug 19 18:26:26 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Fri Aug 19 18:26:26 2016 +0300

----------------------------------------------------------------------
 .../Binary/JavaTypeMappingTest.cs               | 18 +++++++-
 .../Cache/Query/CacheQueriesTest.cs             | 45 ++++++++++----------
 .../Config/cache-query.xml                      | 38 +++++++++++------
 .../Apache.Ignite.Core/Impl/Binary/JavaTypes.cs | 19 ++++++++-
 4 files changed, 82 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f0c3b343/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/JavaTypeMappingTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/JavaTypeMappingTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/JavaTypeMappingTest.cs
index 35d9a2e..10f7cb7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/JavaTypeMappingTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/JavaTypeMappingTest.cs
@@ -83,14 +83,30 @@ namespace Apache.Ignite.Core.Tests.Binary
         public void TestJavaToDotNetMapping()
         {
             Assert.AreEqual(typeof(bool), JavaTypes.GetDotNetType("java.lang.Boolean"));
+            Assert.AreEqual(typeof(bool), JavaTypes.GetDotNetType("boolean"));
+
             Assert.AreEqual(typeof(byte), JavaTypes.GetDotNetType("java.lang.Byte"));
+            Assert.AreEqual(typeof(byte), JavaTypes.GetDotNetType("byte"));
+
             Assert.AreEqual(typeof(short), JavaTypes.GetDotNetType("java.lang.Short"));
+            Assert.AreEqual(typeof(short), JavaTypes.GetDotNetType("short"));
+
             Assert.AreEqual(typeof(int), JavaTypes.GetDotNetType("java.lang.Integer"));
+            Assert.AreEqual(typeof(int), JavaTypes.GetDotNetType("int"));
+
             Assert.AreEqual(typeof(long), JavaTypes.GetDotNetType("java.lang.Long"));
+            Assert.AreEqual(typeof(long), JavaTypes.GetDotNetType("long"));
+
             Assert.AreEqual(typeof(float), JavaTypes.GetDotNetType("java.lang.Float"));
+            Assert.AreEqual(typeof(float), JavaTypes.GetDotNetType("float"));
+
             Assert.AreEqual(typeof(double), JavaTypes.GetDotNetType("java.lang.Double"));
-            Assert.AreEqual(typeof(decimal), JavaTypes.GetDotNetType("java.math.BigDecimal"));
+            Assert.AreEqual(typeof(double), JavaTypes.GetDotNetType("double"));
+
             Assert.AreEqual(typeof(char), JavaTypes.GetDotNetType("java.lang.Character"));
+            Assert.AreEqual(typeof(char), JavaTypes.GetDotNetType("char"));
+
+            Assert.AreEqual(typeof(decimal), JavaTypes.GetDotNetType("java.math.BigDecimal"));
             Assert.AreEqual(typeof(string), JavaTypes.GetDotNetType("java.lang.String"));
             Assert.AreEqual(typeof(DateTime), JavaTypes.GetDotNetType("java.sql.Timestamp"));
             Assert.AreEqual(typeof(Guid), JavaTypes.GetDotNetType("java.util.UUID"));

http://git-wip-us.apache.org/repos/asf/ignite/blob/f0c3b343/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
index a8ffe13..9d6f8fb 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
@@ -123,32 +123,20 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
         }
 
         /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="idx"></param>
-        /// <returns></returns>
-        private IIgnite GetIgnite(int idx)
-        {
-            return Ignition.GetIgnite("grid-" + idx);
-        }
-
-        /// <summary>
-        /// 
+        /// Gets the ignite.
         /// </summary>
-        /// <param name="idx"></param>
-        /// <returns></returns>
-        private ICache<int, QueryPerson> Cache(int idx)
+        private static IIgnite GetIgnite()
         {
-            return GetIgnite(idx).GetCache<int, QueryPerson>(CacheName);
+            return Ignition.GetIgnite("grid-0");
         }
 
         /// <summary>
         /// 
         /// </summary>
         /// <returns></returns>
-        private ICache<int, QueryPerson> Cache()
+        private static ICache<int, QueryPerson> Cache()
         {
-            return Cache(0);
+            return GetIgnite().GetCache<int, QueryPerson>(CacheName);
         }
 
         /// <summary>
@@ -236,8 +224,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
             Cache().Put(4, new QueryPerson("Unknown", 60));
 
             // 1. Empty result set.
-            using (
-                IQueryCursor<ICacheEntry<int, QueryPerson>> cursor =
+            using (IQueryCursor<ICacheEntry<int, QueryPerson>> cursor =
                     Cache().Query(new SqlQuery(typeof(QueryPerson), "age = 100")))
             {
                 IEnumerator<ICacheEntry<int, QueryPerson>> e = cursor.GetEnumerator();
@@ -251,6 +238,8 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
                     { ICacheEntry<int, QueryPerson> entry = e.Current; });
 
                 Assert.Throws<NotSupportedException>(() => e.Reset());
+
+                e.Dispose();
             }
 
             SqlQuery qry = new SqlQuery(typeof (QueryPerson), "age < 60");
@@ -446,7 +435,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
         [Test]
         public void TestIndexingDisabledError()
         {
-            var cache = GetIgnite(0).GetOrCreateCache<int, QueryPerson>("nonindexed_cache");
+            var cache = GetIgnite().GetOrCreateCache<int, QueryPerson>("nonindexed_cache");
 
             var queries = new QueryBase[]
             {
@@ -552,14 +541,14 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
         [Test]
         public void TestDistributedJoins()
         {
-            var cache = GetIgnite(0).GetOrCreateCache<int, QueryPerson>(
+            var cache = GetIgnite().GetOrCreateCache<int, QueryPerson>(
                 new CacheConfiguration("replicatedCache")
                 {
                     QueryEntities = new[]
                     {
                         new QueryEntity(typeof(int), typeof(QueryPerson))
                         {
-                            Fields = new[] {new QueryField("age", typeof(int))}
+                            Fields = new[] {new QueryField("age", "int")}
                         }
                     }
                 });
@@ -585,6 +574,18 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
         }
 
         /// <summary>
+        /// Tests the get configuration.
+        /// </summary>
+        [Test]
+        public void TestGetConfiguration()
+        {
+            var entity = Cache().GetConfiguration().QueryEntities.Single();
+
+            Assert.AreEqual(typeof(int), entity.Fields.Single(x => x.Name == "age").FieldType);
+            Assert.AreEqual(typeof(string), entity.Fields.Single(x => x.Name == "name").FieldType);
+        }
+
+        /// <summary>
         /// Validates the query results.
         /// </summary>
         /// <param name="cache">Cache.</param>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f0c3b343/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/cache-query.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/cache-query.xml b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/cache-query.xml
index b0dc48f..dd5d4d9 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/cache-query.xml
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/cache-query.xml
@@ -57,24 +57,34 @@
                     <property name="atomicityMode" value="TRANSACTIONAL"/>
                     <property name="writeSynchronizationMode" value="FULL_SYNC"/>
 
-                    <property name="typeMetadata">
+                    <property name="queryEntities">
                         <list>
-                            <bean class="org.apache.ignite.cache.CacheTypeMetadata">
+                            <bean class="org.apache.ignite.cache.QueryEntity">
                                 <property name="valueType" value="QueryPerson"/>
-                                <property name="ascendingFields">
-                                    <map>
-                                        <entry key="age" value="java.lang.Integer"/>
-                                    </map>
+                                <property name="fields">
+                                    <util:map map-class="java.util.LinkedHashMap">
+                                        <entry key="age" value="int" />
+                                        <entry key="name" value="java.lang.String" />
+                                    </util:map>
                                 </property>
-                                <property name="queryFields">
-                                    <map>
-                                        <entry key="name" value="java.lang.String"/>
-                                        <entry key="age" value="java.lang.Integer"/>
-                                    </map>
-                                </property>
-                                <property name="textFields">
+                                <property name="indexes">
                                     <list>
-                                        <value>name</value>
+                                        <bean class="org.apache.ignite.cache.QueryIndex">
+                                            <property name="fields">
+                                                <map>
+                                                    <entry key="name" value="true"/>
+                                                </map>
+                                            </property>
+                                            <property name="indexType" value="FULLTEXT"/>
+                                        </bean>
+                                        <bean class="org.apache.ignite.cache.QueryIndex">
+                                            <property name="fields">
+                                                <map>
+                                                    <entry key="age" value="true"/>
+                                                </map>
+                                            </property>
+                                            <property name="indexType" value="SORTED"/>
+                                        </bean>
                                     </list>
                                 </property>
                             </bean>

http://git-wip-us.apache.org/repos/asf/ignite/blob/f0c3b343/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/JavaTypes.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/JavaTypes.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/JavaTypes.cs
index 7d71280..d1395d2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/JavaTypes.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/JavaTypes.cs
@@ -61,6 +61,19 @@ namespace Apache.Ignite.Core.Impl.Binary
         private static readonly Dictionary<string, Type> JavaToNet =
             NetToJava.GroupBy(x => x.Value).ToDictionary(g => g.Key, g => g.First().Key);
 
+        /** */
+        private static readonly Dictionary<string, string> JavaPrimitiveToType = new Dictionary<string, string>
+        {
+            {"boolean", "java.lang.Boolean"},
+            {"byte", "java.lang.Byte"},
+            {"short", "java.lang.Short"},
+            {"char", "java.lang.Character"},
+            {"int", "java.lang.Integer"},
+            {"long", "java.lang.Long"},
+            {"float", "java.lang.Float"},
+            {"double", "java.lang.Double"},
+        };
+
         /// <summary>
         /// Gets the corresponding Java type name.
         /// </summary>
@@ -119,9 +132,13 @@ namespace Apache.Ignite.Core.Impl.Binary
             if (string.IsNullOrEmpty(javaTypeName))
                 return null;
 
+            string fullJavaTypeName;
+
+            JavaPrimitiveToType.TryGetValue(javaTypeName, out fullJavaTypeName);
+
             Type res;
 
-            return JavaToNet.TryGetValue(javaTypeName, out res) ? res : null;
+            return JavaToNet.TryGetValue(fullJavaTypeName ?? javaTypeName, out res) ? res : null;
         }
     }
 }