ignite-sprint-3 - portable class fix

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

Branch: refs/heads/ignite-639
Commit: a7ba0bea463648031bb7b2afb626a63ef2215f96
Parents: 5421701
Author: S.Vladykin <svlady...@gridgain.com>
Authored: Mon Apr 6 15:55:21 2015 +0300
Committer: S.Vladykin <svlady...@gridgain.com>
Committed: Mon Apr 6 15:55:21 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/query/GridQueryProcessor.java | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7ba0bea/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index ba8479f..0ea0b99 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -402,7 +402,9 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
 
             TypeId id;
 
-            if (ctx.cacheObjects().isPortableObject(val)) {
+            boolean portableVal = ctx.cacheObjects().isPortableObject(val);
+
+            if (portableVal) {
                 int typeId = ctx.cacheObjects().typeId(val);
 
                 id = new TypeId(space, typeId);
@@ -415,12 +417,12 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
             if (desc == null || !desc.registered())
                 return;
 
-            if (!desc.valueClass().isAssignableFrom(valCls))
+            if (!portableVal && !desc.valueClass().isAssignableFrom(valCls))
                 throw new IgniteCheckedException("Failed to update index due 
to class name conflict" +
                     "(multiple classes with same simple name are stored in the 
same cache) " +
                     "[expCls=" + desc.valueClass().getName() + ", actualCls=" 
+ valCls.getName() + ']');
 
-            if (!desc.keyClass().isAssignableFrom(key.getClass()))
+            if (!ctx.cacheObjects().isPortableObject(key) && 
!desc.keyClass().isAssignableFrom(key.getClass()))
                 throw new IgniteCheckedException("Failed to update index, 
incorrect key class [expCls=" +
                     desc.keyClass().getName() + ", actualCls=" + 
key.getClass().getName() + "]");
 

Reply via email to