You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2015/08/31 23:25:13 UTC
[50/50] [abbrv] ignite git commit: IGNITE-950 - Fixing tests.
IGNITE-950 - Fixing tests.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b3fd771c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b3fd771c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b3fd771c
Branch: refs/heads/ignite-950
Commit: b3fd771cac277bc154a6c4130bcd32fc6ba76309
Parents: e50d736
Author: Alexey Goncharuk <ag...@gridgain.com>
Authored: Tue Aug 4 10:43:55 2015 -0700
Committer: Alexey Goncharuk <ag...@gridgain.com>
Committed: Tue Aug 4 10:43:55 2015 -0700
----------------------------------------------------------------------
.../configuration/CacheConfiguration.java | 11 +++-
.../communication/GridIoMessageFactory.java | 5 +-
.../cache/CacheIndexedObjectImpl.java | 23 ++++++-
.../cache/KeyCacheIndexedObjectImpl.java | 65 --------------------
.../query/GridCacheDistributedQueryManager.java | 10 +--
.../IgniteCacheObjectProcessorImpl.java | 48 +--------------
.../processors/query/GridQueryProcessor.java | 54 +++++++++++++---
.../optimized/OptimizedObjectInputStream.java | 2 +-
.../cache/IgniteCacheAbstractQuerySelfTest.java | 21 +------
9 files changed, 88 insertions(+), 151 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index eb8186a..f25e98d 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -2340,8 +2340,15 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
ClassProperty(Member member) {
this.member = member;
- name = member instanceof Method && member.getName().startsWith("get") && member.getName().length() > 3 ?
- member.getName().substring(3) : member.getName();
+ if (member instanceof Method && member.getName().startsWith("get") && member.getName().length() > 3) {
+ StringBuilder s = new StringBuilder(member.getName());
+
+ s.setCharAt(3, Character.toLowerCase(s.charAt(3)));
+
+ name = s.substring(3);
+ }
+ else
+ name = member.getName();
((AccessibleObject) member).setAccessible(true);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 29e778d..7da621b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -605,10 +605,7 @@ public class GridIoMessageFactory implements MessageFactory {
break;
- case 114:
- msg = new KeyCacheIndexedObjectImpl();
-
- // [-3..114] - this
+ // [-3..113] - this
// [120..123] - DR
// [-4..-22] - SQL
default:
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
index 931380f..1655b9d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheIndexedObjectImpl.java
@@ -34,7 +34,7 @@ import static org.apache.ignite.marshaller.optimized.OptimizedObjectOutputStream
* Cache object implementation for classes that support footer injection is their serialized form thus enabling fields
* search and extraction without necessity to fully deserialize an object.
*/
-public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheIndexedObject {
+public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheIndexedObject, KeyCacheObject {
/** */
private static final long serialVersionUID = 0L;
@@ -119,7 +119,18 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
/** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectContext ctx) {
- return this;
+ try {
+ if (val != null && !ctx.processor().immutable(val)) {
+ toMarshaledFormIfNeeded();
+
+ return new CacheIndexedObjectImpl(ctx, null, valBytes, start, len);
+ }
+
+ return new CacheIndexedObjectImpl(ctx, val, valBytes, start, len);
+ }
+ catch (IgniteCheckedException e) {
+ throw new IgniteException("Failed to marshal object: " + val, e);
+ }
}
/** {@inheritDoc} */
@@ -145,6 +156,11 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
}
/** {@inheritDoc} */
+ @Override public boolean internal() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public byte type() {
return TYPE_OPTIMIZED;
}
@@ -391,6 +407,9 @@ public class CacheIndexedObjectImpl extends CacheObjectAdapter implements CacheI
if (ctx.copyOnGet())
return false;
+ if (ctx.p2pEnabled())
+ return true;
+
return !checkCls || ctx.processor().hasClass(typeId());
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheIndexedObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheIndexedObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheIndexedObjectImpl.java
deleted file mode 100644
index 02ee988..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheIndexedObjectImpl.java
+++ /dev/null
@@ -1,65 +0,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.
- */
-
-package org.apache.ignite.internal.processors.cache;
-
-/**
- * Cache object implementation for classes that support footer injection is their serialized form thus enabling fields
- * search and extraction without necessity to fully deserialize an object.
- */
-public class KeyCacheIndexedObjectImpl extends CacheIndexedObjectImpl implements KeyCacheObject {
- /** */
- private static final long serialVersionUID = 0L;
-
- /**
- *
- */
- public KeyCacheIndexedObjectImpl() {
- // No-op
- }
-
- /**
- * @param val Object.
- * @param valBytes Object in a serialized form.
- */
- public KeyCacheIndexedObjectImpl(CacheObjectContext objCtx, Object val, byte[] valBytes) {
- super(objCtx, val, valBytes);
-
- assert val != null;
- }
-
- /**
- * @param val Object.
- * @param valBytes Object in a serialized form.
- * @param start Object's start in the array.
- * @param len Object's len in the array.
- */
- public KeyCacheIndexedObjectImpl(CacheObjectContext objCtx, Object val, byte[] valBytes, int start, int len) {
- super(objCtx, val, valBytes, start, len);
- }
-
- /** {@inheritDoc} */
- @Override public byte directType() {
- // refer to GridIoMessageFactory.
- return 114;
- }
-
- /** {@inheritDoc} */
- @Override public boolean internal() {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
index 316713f..8c706d9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
@@ -546,7 +546,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
qry.transform(),
qry.query().pageSize(),
qry.query().includeBackups(),
- qry.arguments(),
+ cctx.kernalContext().query().wrapQueryArguments(cctx, qry.arguments()),
false,
qry.query().keepPortable(),
qry.query().subjectId(),
@@ -559,7 +559,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
cctx.io().addOrderedHandler(topic, resHnd);
fut.listen(new CI1<IgniteInternalFuture<?>>() {
- @Override public void apply(IgniteInternalFuture<?> fut) {
+ @Override
+ public void apply(IgniteInternalFuture<?> fut) {
cctx.io().removeOrderedHandler(topic);
}
});
@@ -655,7 +656,7 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
qry.transform(),
qry.query().pageSize(),
qry.query().includeBackups(),
- qry.arguments(),
+ cctx.kernalContext().query().wrapQueryArguments(cctx, qry.arguments()),
qry.query().includeMetadata(),
qry.query().keepPortable(),
qry.query().subjectId(),
@@ -668,7 +669,8 @@ public class GridCacheDistributedQueryManager<K, V> extends GridCacheQueryManage
cctx.io().addOrderedHandler(topic, resHnd);
fut.listen(new CI1<IgniteInternalFuture<?>>() {
- @Override public void apply(IgniteInternalFuture<?> fut) {
+ @Override
+ public void apply(IgniteInternalFuture<?> fut) {
cctx.io().removeOrderedHandler(topic);
}
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
index dd6df0d..0ae4f66 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
@@ -276,10 +276,10 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
@SuppressWarnings("ExternalizableWithoutPublicNoArgConstructor")
protected KeyCacheObject toCacheKeyObject0(CacheObjectContext ctx, Object obj, boolean userObj) {
if (!userObj)
- return isFieldsIndexingSupported(obj.getClass()) ? new KeyCacheIndexedObjectImpl(ctx, obj, null) :
+ return isFieldsIndexingSupported(obj.getClass()) ? new CacheIndexedObjectImpl(ctx, obj, null) :
new KeyCacheObjectImpl(obj, null);
- return isFieldsIndexingSupported(obj.getClass()) ? new UserKeyCacheIndexedObjectImpl(ctx, obj) :
+ return isFieldsIndexingSupported(obj.getClass()) ? new UserCacheIndexedObjectImpl(ctx, obj, null) :
new UserKeyCacheObjectImpl(obj);
}
@@ -583,50 +583,6 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
}
/**
- * Wraps key provided by user, must be serialized before stored in cache.
- * Used by classes that support fields indexing. Refer to {@link #isFieldsIndexingSupported(Class)}.
- */
- private static class UserKeyCacheIndexedObjectImpl extends KeyCacheIndexedObjectImpl {
- /** */
- private static final long serialVersionUID = 0L;
-
- /**
- *
- */
- public UserKeyCacheIndexedObjectImpl() {
- //No-op.
- }
-
- /**
- * @param key Key.
- */
- UserKeyCacheIndexedObjectImpl(CacheObjectContext ctx, Object key) {
- super(ctx, key, null);
- }
-
- /** {@inheritDoc} */
- @Override public CacheObject prepareForCache(CacheObjectContext ctx) {
- try {
- if (!ctx.processor().immutable(val)) {
- toMarshaledFormIfNeeded();
-
- ClassLoader ldr = ctx.p2pEnabled() ?
- IgniteUtils.detectClassLoader(IgniteUtils.detectClass(val)) : U.gridClassLoader();
-
- Object val = ctx.processor().unmarshal(ctx, valBytes, start, len, ldr);
-
- return new KeyCacheIndexedObjectImpl(ctx, val, valBytes, start, len);
- }
-
- return new KeyCacheIndexedObjectImpl(ctx, val, valBytes, start, len);
- }
- catch (IgniteCheckedException e) {
- throw new IgniteException("Failed to marshal object: " + val, e);
- }
- }
- }
-
- /**
* Wraps value provided by user, must be copied before stored in cache.
*/
private static class UserCacheObjectByteArrayImpl extends CacheObjectByteArrayImpl {
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/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 f76da26..0581977 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
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.*;
import org.apache.ignite.internal.processors.*;
import org.apache.ignite.internal.processors.cache.*;
import org.apache.ignite.internal.processors.cache.query.*;
+import org.apache.ignite.internal.processors.cacheobject.*;
import org.apache.ignite.internal.util.*;
import org.apache.ignite.internal.util.future.*;
import org.apache.ignite.internal.util.lang.*;
@@ -686,7 +687,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
String space = cctx.name();
String type = qry.getType();
String sqlQry = qry.getSql();
- Object[] params = qry.getArgs();
+ Object[] params = wrapQueryArguments(cctx, qry.getArgs());
TypeDescriptor typeDesc = typesByName.get(
new TypeName(
@@ -784,7 +785,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
@Override public QueryCursor<List<?>> applyx() throws IgniteCheckedException {
String space = cctx.name();
String sql = qry.getSql();
- Object[] args = qry.getArgs();
+ Object[] args = wrapQueryArguments(cctx, qry.getArgs());
final GridQueryFieldsResult res = idx.queryFields(space, sql, F.asList(args),
idx.backupFilter(null, null, null));
@@ -852,7 +853,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
public static boolean isSqlType(Class<?> cls) {
cls = U.box(cls);
- return SQL_TYPES.contains(cls) || isGeometryClass(cls);
+ return SQL_TYPES.contains(cls) || isGeometryClass(cls) || (cls.isArray() && isSqlType(cls.getComponentType()));
}
/**
@@ -1071,6 +1072,39 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/**
+ * Converts arguments to cache indexed objects if needed.
+ *
+ * @param args Arguments to wrap.
+ * @return Wrapped array.
+ */
+ public Object[] wrapQueryArguments(GridCacheContext cctx, Object[] args) {
+ IgniteCacheObjectProcessor objs = ctx.cacheObjects();
+
+ if (!objs.isFieldsIndexingEnabled() || args == null)
+ return args;
+
+ Object[] cpy = null;
+
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] != null && objs.isFieldsIndexingSupported(args[i].getClass())) {
+ if (cpy == null) {
+ cpy = new Object[args.length];
+
+ System.arraycopy(args, 0, cpy, 0, i);
+ }
+
+ cpy[i] = objs.toCacheObject(cctx.cacheObjectContext(), args[i], false);
+ }
+ else {
+ if (cpy != null)
+ cpy[i] = args[i];
+ }
+ }
+
+ return cpy == null ? args : cpy;
+ }
+
+ /**
* Processes declarative metadata for class.
*
* @param meta Type metadata.
@@ -1250,17 +1284,19 @@ public class GridQueryProcessor extends GridProcessorAdapter {
int order = 0;
for (Map.Entry<String, IgniteBiTuple<Class<?>, Boolean>> idxField : idxFields.entrySet()) {
- // Skip _val field as it is an implicit field.
- if (_VAL.equals(idxField.getKey()))
- continue;
+ Property prop = null;
- Property prop = buildPortableProperty(idxField.getKey(), idxField.getValue().get1(), aliases);
+ // Skip _val field as it is an implicit field.
+ if (!_VAL.equals(idxField.getKey())) {
+ prop = buildPortableProperty(idxField.getKey(), idxField.getValue().get1(), aliases);
- d.addProperty(prop, false);
+ d.addProperty(prop, false);
+ }
Boolean descending = idxField.getValue().get2();
- d.addFieldToIndex(idxName, prop.name(), order, descending != null && descending);
+ d.addFieldToIndex(idxName, prop == null ? idxField.getKey() : prop.name(), order,
+ descending != null && descending);
order++;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index eabebc6..9ce2c9f 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -1334,7 +1334,7 @@ public class OptimizedObjectInputStream extends ObjectInputStream implements Opt
}
}
else
- throw new IgniteFieldNotFoundException("Object doesn't have a field with the name: " + fieldName);
+ return null;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/b3fd771c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
index f0ee81f..a8f0219 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
@@ -32,7 +32,6 @@ import org.apache.ignite.internal.util.tostring.*;
import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.internal.util.typedef.internal.*;
import org.apache.ignite.lang.*;
-import org.apache.ignite.marshaller.optimized.*;
import org.apache.ignite.spi.discovery.tcp.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
@@ -1195,7 +1194,7 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
QueryCursor<Cache.Entry<UUID, Person>> q = cache.query(new TextQuery<UUID, Person>(Person.class, "White"));
- q.getAll();
+ assertEquals(2, q.getAll().size());
assert latch.await(1000, MILLISECONDS);
assert execLatch.await(1000, MILLISECONDS);
@@ -1275,7 +1274,7 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
/**
*
*/
- public static class Person implements Externalizable {
+ public static class Person implements Serializable {
/** */
@GridToStringExclude
@QuerySqlField
@@ -1292,7 +1291,7 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
/** */
@QuerySqlField(index = true)
- private int fake$Field;
+ private transient int fake$Field;
/**
* Required by {@link Externalizable}.
@@ -1335,20 +1334,6 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
}
/** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- U.writeUuid(out, id);
- U.writeString(out, name);
- out.writeInt(salary);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- id = U.readUuid(in);
- name = U.readString(in);
- salary = in.readInt();
- }
-
- /** {@inheritDoc} */
@Override public int hashCode() {
return id.hashCode() + 31 * name.hashCode() + 31 * 31 * salary;
}