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 2017/05/27 18:39:28 UTC
[2/2] ignite git commit: IGNITE-5311: Added ability to get
CacheObject value without CacheObjectContext. This closes #2019.
IGNITE-5311: Added ability to get CacheObject value without CacheObjectContext. This closes #2019.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/aad3b0c5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/aad3b0c5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/aad3b0c5
Branch: refs/heads/master
Commit: aad3b0c536e3f7b0836d31daa63cd6d6137675d5
Parents: 858e5b7
Author: devozerov <vo...@gridgain.com>
Authored: Sat May 27 21:39:08 2017 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Sat May 27 21:39:08 2017 +0300
----------------------------------------------------------------------
.../internal/binary/BinaryEnumObjectImpl.java | 5 +-
.../internal/binary/BinaryObjectImpl.java | 18 +-
.../binary/BinaryObjectOffheapImpl.java | 3 +-
.../internal/processors/cache/CacheObject.java | 2 +-
.../processors/cache/CacheObjectAdapter.java | 4 +-
.../cache/CacheObjectByteArrayImpl.java | 2 +-
.../processors/cache/CacheObjectContext.java | 197 ++-----------------
.../processors/cache/CacheObjectImpl.java | 25 ++-
.../processors/cache/CacheObjectUtils.java | 173 ++++++++++++++++
.../cache/CacheObjectValueContext.java | 50 +++++
.../processors/cache/GridCacheContext.java | 4 +-
.../processors/cache/GridCacheEventManager.java | 2 +-
.../processors/cache/GridCacheMapEntry.java | 4 +-
.../processors/cache/KeyCacheObjectImpl.java | 4 +-
.../cache/binary/CacheObjectBinaryContext.java | 6 +-
.../binary/CacheObjectBinaryProcessorImpl.java | 5 +-
.../cache/database/CacheDataRowAdapter.java | 8 +-
.../cache/distributed/near/GridNearTxLocal.java | 3 +-
.../cache/transactions/TxDeadlock.java | 7 +-
.../cacheobject/IgniteCacheObjectProcessor.java | 6 +-
.../IgniteCacheObjectProcessorImpl.java | 39 ++--
.../query/CacheQueryObjectValueContext.java | 64 ++++++
.../query/GridQueryCacheObjectsIterator.java | 16 +-
.../processors/query/GridQueryProcessor.java | 14 +-
.../processors/query/GridRunningQueryInfo.java | 16 +-
.../query/VisorRunningQueriesCollectorTask.java | 2 +-
.../internal/GridAffinityNoCacheSelfTest.java | 3 +-
.../IgniteIncompleteCacheObjectSelfTest.java | 2 +-
.../database/FreeListImplSelfTest.java | 3 +-
.../query/h2/DmlStatementsProcessor.java | 4 +-
.../processors/query/h2/IgniteH2Indexing.java | 44 +++--
.../query/h2/opt/GridLuceneIndex.java | 2 +-
.../query/h2/twostep/GridMapQueryExecutor.java | 4 +-
.../h2/twostep/GridReduceQueryExecutor.java | 159 ++++-----------
.../query/h2/twostep/ReduceQueryRun.java | 157 +++++++++++++++
.../h2/GridIndexingSpiAbstractSelfTest.java | 3 +-
.../query/h2/sql/GridQueryParsingTest.java | 4 +-
37 files changed, 655 insertions(+), 409 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index f889e45..6a1ad6e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -31,6 +31,7 @@ import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
@@ -280,7 +281,7 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return deserialize();
}
@@ -335,7 +336,7 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
/** {@inheritDoc} */
@Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
- this.ctx = ((CacheObjectBinaryProcessorImpl)ctx.processor()).binaryContext();
+ this.ctx = ((CacheObjectBinaryProcessorImpl)ctx.kernalContext().cacheObjects()).binaryContext();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index 16e5ccd..d0d0699 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -38,6 +38,7 @@ import org.apache.ignite.internal.binary.streams.BinaryHeapInputStream;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectAdapter;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -135,7 +136,7 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
Object obj0 = obj;
if (obj0 == null || (cpy && needCopy(ctx)))
@@ -188,7 +189,7 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
/** {@inheritDoc} */
@Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
- this.ctx = ((CacheObjectBinaryProcessorImpl)ctx.processor()).binaryContext();
+ this.ctx = ((CacheObjectBinaryProcessorImpl)ctx.kernalContext().cacheObjects()).binaryContext();
}
/** {@inheritDoc} */
@@ -787,9 +788,9 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
* @param coCtx CacheObjectContext.
* @return Object.
*/
- private Object deserializeValue(@Nullable CacheObjectContext coCtx) {
- BinaryReaderExImpl reader = reader(null,
- coCtx != null ? coCtx.kernalContext().config().getClassLoader() : ctx.configuration().getClassLoader(), true);
+ private Object deserializeValue(@Nullable CacheObjectValueContext coCtx) {
+ BinaryReaderExImpl reader = reader(null, coCtx != null ?
+ coCtx.kernalContext().config().getClassLoader() : ctx.configuration().getClassLoader(), true);
Object obj0 = reader.deserialize();
@@ -807,8 +808,8 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
* @param ctx Context.
* @return {@code True} need to copy value returned to user.
*/
- private boolean needCopy(CacheObjectContext ctx) {
- return ctx.copyOnGet() && obj != null && !ctx.processor().immutable(obj);
+ private boolean needCopy(CacheObjectValueContext ctx) {
+ return ctx.copyOnGet() && obj != null && !ctx.kernalContext().cacheObjects().immutable(obj);
}
/**
@@ -819,7 +820,8 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
* @param forUnmarshal {@code True} if reader is need to unmarshal object.
* @return Reader.
*/
- private BinaryReaderExImpl reader(@Nullable BinaryReaderHandles rCtx, @Nullable ClassLoader ldr, boolean forUnmarshal) {
+ private BinaryReaderExImpl reader(@Nullable BinaryReaderHandles rCtx, @Nullable ClassLoader ldr,
+ boolean forUnmarshal) {
if (ldr == null)
ldr = ctx.configuration().getClassLoader();
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index bdf0ce1..0a0a7b1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl;
import org.apache.ignite.internal.binary.streams.BinaryOffheapInputStream;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.plugin.extensions.communication.MessageReader;
import org.apache.ignite.plugin.extensions.communication.MessageWriter;
@@ -444,7 +445,7 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return (T)deserializeValue();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
index c226ba2..8faaa03 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObject.java
@@ -43,7 +43,7 @@ public interface CacheObject extends Message {
* @param cpy If {@code true} need to copy value.
* @return Value.
*/
- @Nullable public <T> T value(CacheObjectContext ctx, boolean cpy);
+ @Nullable public <T> T value(CacheObjectValueContext ctx, boolean cpy);
/**
* @param ctx Context.
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index 6af38ac..e2a15ee 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -50,8 +50,8 @@ public abstract class CacheObjectAdapter implements CacheObject, Externalizable
* @param ctx Context.
* @return {@code True} need to copy value returned to user.
*/
- protected boolean needCopy(CacheObjectContext ctx) {
- return ctx.copyOnGet() && val != null && !ctx.processor().immutable(val);
+ protected boolean needCopy(CacheObjectValueContext ctx) {
+ return ctx.copyOnGet() && val != null && !ctx.kernalContext().cacheObjects().immutable(val);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
index fe284ae..6a13f8d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectByteArrayImpl.java
@@ -62,7 +62,7 @@ public class CacheObjectByteArrayImpl implements CacheObject, Externalizable {
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
if (cpy)
return (T)Arrays.copyOf(val, val.length);
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
index a777ab6..655a3e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
@@ -27,21 +27,17 @@ import java.util.Map;
import org.apache.ignite.cache.affinity.AffinityKeyMapper;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.binary.BinaryUtils;
-import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.typedef.F;
/**
*
*/
@SuppressWarnings("TypeMayBeWeakened")
-public class CacheObjectContext {
+public class CacheObjectContext implements CacheObjectValueContext {
/** */
private GridKernalContext kernalCtx;
/** */
- private IgniteCacheObjectProcessor proc;
-
- /** */
private String cacheName;
/** */
@@ -54,9 +50,6 @@ public class CacheObjectContext {
private boolean storeVal;
/** */
- private boolean p2pEnabled;
-
- /** */
private boolean addDepInfo;
/**
@@ -78,9 +71,6 @@ public class CacheObjectContext {
this.cpyOnGet = cpyOnGet;
this.storeVal = storeVal;
this.addDepInfo = addDepInfo;
-
- p2pEnabled = kernalCtx.config().isPeerClassLoadingEnabled();
- proc = kernalCtx.cacheObjects();
}
/**
@@ -90,31 +80,18 @@ public class CacheObjectContext {
return cacheName;
}
- /**
- * @return {@code True} if peer class loading is enabled.
- */
- public boolean p2pEnabled() {
- return p2pEnabled;
- }
-
- /**
- * @return {@code True} if deployment info should be associated with the objects of this cache.
- */
- public boolean addDeploymentInfo() {
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
return addDepInfo;
}
- /**
- * @return Copy on get flag.
- */
- public boolean copyOnGet() {
+ /** {@inheritDoc} */
+ @Override public boolean copyOnGet() {
return cpyOnGet;
}
- /**
- * @return {@code True} if should store unmarshalled value in cache.
- */
- public boolean storeValue() {
+ /** {@inheritDoc} */
+ @Override public boolean storeValue() {
return storeVal;
}
@@ -125,27 +102,14 @@ public class CacheObjectContext {
return dfltAffMapper;
}
- /**
- * @return Kernal context.
- */
- public GridKernalContext kernalContext() {
+ /** {@inheritDoc} */
+ @Override public GridKernalContext kernalContext() {
return kernalCtx;
}
- /**
- * @return Processor.
- */
- public IgniteCacheObjectProcessor processor() {
- return proc;
- }
-
- /**
- * @param o Object to unwrap.
- * @param keepBinary Keep binary flag.
- * @return Unwrapped object.
- */
- public Object unwrapBinaryIfNeeded(Object o, boolean keepBinary) {
- return unwrapBinaryIfNeeded(o, keepBinary, true);
+ /** {@inheritDoc} */
+ @Override public boolean binaryEnabled() {
+ return false;
}
/**
@@ -158,141 +122,6 @@ public class CacheObjectContext {
if (o == null)
return null;
- return unwrapBinary(o, keepBinary, cpy);
- }
-
- /**
- * @param col Collection of objects to unwrap.
- * @param keepBinary Keep binary flag.
- * @return Unwrapped collection.
- */
- public Collection<Object> unwrapBinariesIfNeeded(Collection<Object> col, boolean keepBinary) {
- return unwrapBinariesIfNeeded(col, keepBinary, true);
- }
-
- /**
- * @param col Collection to unwrap.
- * @param keepBinary Keep binary flag.
- * @param cpy Copy value flag.
- * @return Unwrapped collection.
- */
- public Collection<Object> unwrapBinariesIfNeeded(Collection<Object> col, boolean keepBinary, boolean cpy) {
- Collection<Object> col0 = BinaryUtils.newKnownCollection(col);
-
- if (col0 == null)
- col0 = new ArrayList<>(col.size());
-
- for (Object obj : col)
- col0.add(unwrapBinary(obj, keepBinary, cpy));
-
- return col0;
- }
-
- /**
- * @param col Collection to unwrap.
- * @param keepBinary Keep binary flag.
- * @param cpy Copy flag.
- * @return Unwrapped collection.
- */
- private Collection<Object> unwrapKnownCollection(Collection<Object> col, boolean keepBinary, boolean cpy) {
- Collection<Object> col0 = BinaryUtils.newKnownCollection(col);
-
- for (Object obj : col)
- col0.add(unwrapBinary(obj, keepBinary, cpy));
-
- return col0;
- }
-
- /**
- * Unwrap array of binaries if needed.
- *
- * @param arr Array.
- * @param keepBinary Keep binary flag.
- * @param cpy Copy.
- * @return Result.
- */
- public Object[] unwrapBinariesInArrayIfNeeded(Object[] arr, boolean keepBinary, boolean cpy) {
- if (BinaryUtils.knownArray(arr))
- return arr;
-
- Object[] res = new Object[arr.length];
-
- for (int i = 0; i < arr.length; i++)
- res[i] = unwrapBinary(arr[i], keepBinary, cpy);
-
- return res;
- }
-
- /**
- * Unwraps map.
- *
- * @param map Map to unwrap.
- * @param keepBinary Keep binary flag.
- * @return Unwrapped collection.
- */
- private Map<Object, Object> unwrapBinariesIfNeeded(Map<Object, Object> map, boolean keepBinary, boolean cpy) {
- if (keepBinary)
- return map;
-
- Map<Object, Object> map0 = BinaryUtils.newMap(map);
-
- for (Map.Entry<Object, Object> e : map.entrySet())
- map0.put(unwrapBinary(e.getKey(), keepBinary, cpy), unwrapBinary(e.getValue(), keepBinary, cpy));
-
- return map0;
- }
-
- /**
- * @param o Object to unwrap.
- * @return Unwrapped object.
- */
- private Object unwrapBinary(Object o, boolean keepBinary, boolean cpy) {
- if (o instanceof Map.Entry) {
- Map.Entry entry = (Map.Entry)o;
-
- Object key = entry.getKey();
-
- Object uKey = unwrapBinary(key, keepBinary, cpy);
-
- Object val = entry.getValue();
-
- Object uVal = unwrapBinary(val, keepBinary, cpy);
-
- return (key != uKey || val != uVal) ? F.t(uKey, uVal) : o;
- }
- else if (BinaryUtils.knownCollection(o))
- return unwrapKnownCollection((Collection<Object>)o, keepBinary, cpy);
- else if (BinaryUtils.knownMap(o))
- return unwrapBinariesIfNeeded((Map<Object, Object>)o, keepBinary, cpy);
- else if (o instanceof Object[])
- return unwrapBinariesInArrayIfNeeded((Object[])o, keepBinary, cpy);
- else if (o instanceof CacheObject) {
- CacheObject co = (CacheObject)o;
-
- if (!keepBinary || co.isPlatformType())
- return unwrapBinary(co.value(this, cpy), keepBinary, cpy);
- }
-
- return o;
- }
-
- /**
- * @param o Object to test.
- * @return True if collection should be recursively unwrapped.
- */
- private boolean knownCollection(Object o) {
- Class<?> cls = o == null ? null : o.getClass();
-
- return cls == ArrayList.class || cls == LinkedList.class || cls == HashSet.class;
- }
-
- /**
- * @param o Object to test.
- * @return True if map should be recursively unwrapped.
- */
- private boolean knownMap(Object o) {
- Class<?> cls = o == null ? null : o.getClass();
-
- return cls == HashMap.class || cls == LinkedHashMap.class;
+ return CacheObjectUtils.unwrapBinaryIfNeeded(this, o, keepBinary, cpy);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
index 7fe4297..76f354a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectImpl.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.jetbrains.annotations.Nullable;
/**
@@ -53,27 +55,31 @@ public class CacheObjectImpl extends CacheObjectAdapter {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
cpy = cpy && needCopy(ctx);
try {
+ GridKernalContext kernalCtx = ctx.kernalContext();
+
+ IgniteCacheObjectProcessor proc = ctx.kernalContext().cacheObjects();
+
if (cpy) {
if (valBytes == null) {
assert val != null;
- valBytes = ctx.processor().marshal(ctx, val);
+ valBytes = proc.marshal(ctx, val);
}
ClassLoader clsLdr;
if (val != null)
clsLdr = val.getClass().getClassLoader();
- else if (ctx.kernalContext().config().isPeerClassLoadingEnabled())
- clsLdr = ctx.kernalContext().cache().context().deploy().globalLoader();
+ else if (kernalCtx.config().isPeerClassLoadingEnabled())
+ clsLdr = kernalCtx.cache().context().deploy().globalLoader();
else
clsLdr = null;
- return (T)ctx.processor().unmarshal(ctx, valBytes, clsLdr);
+ return (T)proc.unmarshal(ctx, valBytes, clsLdr);
}
if (val != null)
@@ -81,9 +87,8 @@ public class CacheObjectImpl extends CacheObjectAdapter {
assert valBytes != null;
- Object val = ctx.processor().unmarshal(ctx, valBytes,
- ctx.kernalContext().config().isPeerClassLoadingEnabled() ?
- ctx.kernalContext().cache().context().deploy().globalLoader() : null);
+ Object val = proc.unmarshal(ctx, valBytes, kernalCtx.config().isPeerClassLoadingEnabled() ?
+ kernalCtx.cache().context().deploy().globalLoader() : null);
if (ctx.storeValue())
this.val = val;
@@ -98,7 +103,7 @@ public class CacheObjectImpl extends CacheObjectAdapter {
/** {@inheritDoc} */
@Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
if (valBytes == null)
- valBytes = ctx.processor().marshal(ctx, val);
+ valBytes = ctx.kernalContext().cacheObjects().marshal(ctx, val);
return valBytes;
}
@@ -116,7 +121,7 @@ public class CacheObjectImpl extends CacheObjectAdapter {
assert val != null || valBytes != null;
if (val == null && ctx.storeValue())
- val = ctx.processor().unmarshal(ctx, valBytes, ldr);
+ val = ctx.kernalContext().cacheObjects().unmarshal(ctx, valBytes, ldr);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
new file mode 100644
index 0000000..f9c76df
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectUtils.java
@@ -0,0 +1,173 @@
+/*
+ * 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;
+
+import org.apache.ignite.internal.binary.BinaryUtils;
+import org.apache.ignite.internal.util.typedef.F;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Cache object utility methods.
+ */
+public class CacheObjectUtils {
+ /**
+ * @param o Object to unwrap.
+ * @param keepBinary Keep binary flag.
+ * @param cpy Copy value flag.
+ * @return Unwrapped object.
+ */
+ public static Object unwrapBinaryIfNeeded(CacheObjectValueContext ctx, Object o, boolean keepBinary, boolean cpy) {
+ if (o == null)
+ return null;
+
+ return unwrapBinary(ctx, o, keepBinary, cpy);
+ }
+
+ /**
+ * @param col Collection of objects to unwrap.
+ * @param keepBinary Keep binary flag.
+ * @return Unwrapped collection.
+ */
+ public static Collection<Object> unwrapBinariesIfNeeded(CacheObjectValueContext ctx, Collection<Object> col,
+ boolean keepBinary) {
+ return unwrapBinariesIfNeeded(ctx, col, keepBinary, true);
+ }
+
+ /**
+ * @param col Collection to unwrap.
+ * @param keepBinary Keep binary flag.
+ * @param cpy Copy flag.
+ * @return Unwrapped collection.
+ */
+ private static Collection<Object> unwrapKnownCollection(CacheObjectValueContext ctx, Collection<Object> col,
+ boolean keepBinary, boolean cpy) {
+ Collection<Object> col0 = BinaryUtils.newKnownCollection(col);
+
+ assert col0 != null;
+
+ for (Object obj : col)
+ col0.add(unwrapBinary(ctx, obj, keepBinary, cpy));
+
+ return col0;
+ }
+
+ /**
+ * Unwraps map.
+ *
+ * @param map Map to unwrap.
+ * @param keepBinary Keep binary flag.
+ * @return Unwrapped collection.
+ */
+ private static Map<Object, Object> unwrapBinariesIfNeeded(CacheObjectValueContext ctx, Map<Object, Object> map,
+ boolean keepBinary, boolean cpy) {
+ if (keepBinary)
+ return map;
+
+ Map<Object, Object> map0 = BinaryUtils.newMap(map);
+
+ for (Map.Entry<Object, Object> e : map.entrySet())
+ map0.put(unwrapBinary(ctx, e.getKey(), false, cpy), unwrapBinary(ctx, e.getValue(), false, cpy));
+
+ return map0;
+ }
+
+ /**
+ * @param col Collection to unwrap.
+ * @param keepBinary Keep binary flag.
+ * @param cpy Copy value flag.
+ * @return Unwrapped collection.
+ */
+ private static Collection<Object> unwrapBinariesIfNeeded(CacheObjectValueContext ctx, Collection<Object> col,
+ boolean keepBinary, boolean cpy) {
+ Collection<Object> col0 = BinaryUtils.newKnownCollection(col);
+
+ if (col0 == null)
+ col0 = new ArrayList<>(col.size());
+
+ for (Object obj : col)
+ col0.add(unwrapBinary(ctx, obj, keepBinary, cpy));
+
+ return col0;
+ }
+
+ /**
+ * Unwrap array of binaries if needed.
+ *
+ * @param arr Array.
+ * @param keepBinary Keep binary flag.
+ * @param cpy Copy.
+ * @return Result.
+ */
+ private static Object[] unwrapBinariesInArrayIfNeeded(CacheObjectValueContext ctx, Object[] arr, boolean keepBinary,
+ boolean cpy) {
+ if (BinaryUtils.knownArray(arr))
+ return arr;
+
+ Object[] res = new Object[arr.length];
+
+ for (int i = 0; i < arr.length; i++)
+ res[i] = unwrapBinary(ctx, arr[i], keepBinary, cpy);
+
+ return res;
+ }
+
+ /**
+ * @param o Object to unwrap.
+ * @return Unwrapped object.
+ */
+ @SuppressWarnings("unchecked")
+ private static Object unwrapBinary(CacheObjectValueContext ctx, Object o, boolean keepBinary, boolean cpy) {
+ if (o instanceof Map.Entry) {
+ Map.Entry entry = (Map.Entry)o;
+
+ Object key = entry.getKey();
+
+ Object uKey = unwrapBinary(ctx, key, keepBinary, cpy);
+
+ Object val = entry.getValue();
+
+ Object uVal = unwrapBinary(ctx, val, keepBinary, cpy);
+
+ return (key != uKey || val != uVal) ? F.t(uKey, uVal) : o;
+ }
+ else if (BinaryUtils.knownCollection(o))
+ return unwrapKnownCollection(ctx, (Collection<Object>)o, keepBinary, cpy);
+ else if (BinaryUtils.knownMap(o))
+ return unwrapBinariesIfNeeded(ctx, (Map<Object, Object>)o, keepBinary, cpy);
+ else if (o instanceof Object[])
+ return unwrapBinariesInArrayIfNeeded(ctx, (Object[])o, keepBinary, cpy);
+ else if (o instanceof CacheObject) {
+ CacheObject co = (CacheObject)o;
+
+ if (!keepBinary || co.isPlatformType())
+ return unwrapBinary(ctx, co.value(ctx, cpy), keepBinary, cpy);
+ }
+
+ return o;
+ }
+
+ /**
+ * Private constructor.
+ */
+ private CacheObjectUtils() {
+ // No-op.
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
new file mode 100644
index 0000000..49b2873
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectValueContext.java
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+import org.apache.ignite.internal.GridKernalContext;
+
+/**
+ * Context to get value of cache object.
+ */
+public interface CacheObjectValueContext {
+ /**
+ * @return Kernal context.
+ */
+ public GridKernalContext kernalContext();
+
+ /**
+ * @return Copy on get flag.
+ */
+ public boolean copyOnGet();
+
+ /**
+ * @return {@code True} if should store unmarshalled value in cache.
+ */
+ public boolean storeValue();
+
+ /**
+ * @return {@code True} if deployment info should be associated with the objects of this cache.
+ */
+ public boolean addDeploymentInfo();
+
+ /**
+ * @return Binary enabled flag.
+ */
+ public boolean binaryEnabled();
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index a3e70dd..e637122 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -1713,7 +1713,7 @@ public class GridCacheContext<K, V> implements Externalizable {
* @return Unwrapped collection.
*/
public Collection<Object> unwrapBinariesIfNeeded(Collection<Object> col, boolean keepBinary) {
- return cacheObjCtx.unwrapBinariesIfNeeded(col, keepBinary);
+ return CacheObjectUtils.unwrapBinariesIfNeeded(cacheObjCtx, col, keepBinary);
}
/**
@@ -1724,7 +1724,7 @@ public class GridCacheContext<K, V> implements Externalizable {
* @return Unwrapped object.
*/
public Object unwrapBinaryIfNeeded(Object o, boolean keepBinary) {
- return cacheObjCtx.unwrapBinaryIfNeeded(o, keepBinary);
+ return unwrapBinaryIfNeeded(o, keepBinary, true);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
index 687b132..93c5950 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEventManager.java
@@ -309,7 +309,7 @@ public class GridCacheEventManager extends GridCacheManagerAdapter {
oldVal0 = cctx.cacheObjectContext().unwrapBinaryIfNeeded(oldVal, keepBinary, false);
}
catch (Exception e) {
- if (!cctx.cacheObjectContext().processor().isBinaryEnabled(cctx.config()))
+ if (!cctx.cacheObjectContext().kernalContext().cacheObjects().isBinaryEnabled(cctx.config()))
throw e;
if (log.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 15e4469..4f87658 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -3840,13 +3840,13 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
/** {@inheritDoc} */
@Override public K getKey() {
- return (K)cctx.cacheObjectContext().unwrapBinaryIfNeeded(key, keepBinary);
+ return (K)cctx.cacheObjectContext().unwrapBinaryIfNeeded(key, keepBinary, true);
}
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override public V getValue() {
- return (V)cctx.cacheObjectContext().unwrapBinaryIfNeeded(peekVisibleValue(), keepBinary);
+ return (V)cctx.cacheObjectContext().unwrapBinaryIfNeeded(peekVisibleValue(), keepBinary, true);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
index b9efab1..c50672b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/KeyCacheObjectImpl.java
@@ -75,7 +75,7 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter implements KeyCacheOb
/** {@inheritDoc} */
@Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
if (valBytes == null)
- valBytes = ctx.processor().marshal(ctx, val);
+ valBytes = ctx.kernalContext().cacheObjects().marshal(ctx, val);
return valBytes;
}
@@ -94,7 +94,7 @@ public class KeyCacheObjectImpl extends CacheObjectAdapter implements KeyCacheOb
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
assert val != null;
return (T)val;
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
index 26c713c..3b3cf67 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryContext.java
@@ -53,10 +53,8 @@ public class CacheObjectBinaryContext extends CacheObjectContext {
this.binaryEnabled = binaryEnabled;
}
- /**
- * @return Binary enabled flag.
- */
- public boolean binaryEnabled() {
+ /** {@inheritDoc} */
+ @Override public boolean binaryEnabled() {
return binaryEnabled;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 14947e9..5567809 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -59,6 +59,7 @@ import org.apache.ignite.internal.binary.streams.BinaryOffheapInputStream;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheUtils;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
@@ -735,7 +736,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
- @Override public byte[] marshal(CacheObjectContext ctx, Object val) throws IgniteCheckedException {
+ @Override public byte[] marshal(CacheObjectValueContext ctx, Object val) throws IgniteCheckedException {
if (!((CacheObjectBinaryContext)ctx).binaryEnabled() || binaryMarsh == null)
return super.marshal(ctx, val);
@@ -747,7 +748,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm
}
/** {@inheritDoc} */
- @Override public Object unmarshal(CacheObjectContext ctx, byte[] bytes, ClassLoader clsLdr)
+ @Override public Object unmarshal(CacheObjectValueContext ctx, byte[] bytes, ClassLoader clsLdr)
throws IgniteCheckedException {
if (!((CacheObjectBinaryContext)ctx).binaryEnabled() || binaryMarsh == null)
return super.unmarshal(ctx, bytes, clsLdr);
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
index afeada5..955ca69 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
@@ -283,7 +283,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
byte[] bytes = PageUtils.getBytes(addr, off, len);
off += len;
- key = coctx.processor().toKeyCacheObject(coctx, type, bytes);
+ key = coctx.kernalContext().cacheObjects().toKeyCacheObject(coctx, type, bytes);
if (rowData == RowData.KEY_ONLY)
return;
@@ -300,7 +300,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
byte[] bytes = PageUtils.getBytes(addr, off, len);
off += len;
- val = coctx.processor().toCacheObject(coctx, type, bytes);
+ val = coctx.kernalContext().cacheObjects().toCacheObject(coctx, type, bytes);
ver = CacheVersionIO.read(addr + off, false);
@@ -359,7 +359,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
ByteBuffer buf,
IncompleteCacheObject incomplete
) throws IgniteCheckedException {
- incomplete = coctx.processor().toKeyCacheObject(coctx, buf, incomplete);
+ incomplete = coctx.kernalContext().cacheObjects().toKeyCacheObject(coctx, buf, incomplete);
if (incomplete.isReady()) {
key = (KeyCacheObject)incomplete.object();
@@ -384,7 +384,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
ByteBuffer buf,
IncompleteCacheObject incomplete
) throws IgniteCheckedException {
- incomplete = coctx.processor().toCacheObject(coctx, buf, incomplete);
+ incomplete = coctx.kernalContext().cacheObjects().toCacheObject(coctx, buf, incomplete);
if (incomplete.isReady()) {
val = incomplete.object();
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index 9ad084e..8c10e53 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -1728,7 +1728,8 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements AutoClosea
for (KeyCacheObject cacheKey : lockKeys) {
K keyVal = (K)
(keepCacheObjects ? cacheKey :
- cacheCtx.cacheObjectContext().unwrapBinaryIfNeeded(cacheKey, !deserializeBinary));
+ cacheCtx.cacheObjectContext().unwrapBinaryIfNeeded(cacheKey, !deserializeBinary,
+ true));
if (retMap.containsKey(keyVal))
// We already have a return value.
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlock.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlock.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlock.java
index 97db698..a613184 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlock.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlock.java
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.typedef.T2;
@@ -133,15 +134,15 @@ public class TxDeadlock {
IgniteTxKey txKey = e.getKey();
try {
- CacheObjectContext objCtx = ctx.cacheObjectContext(txKey.cacheId());
+ GridCacheContext cctx = ctx.cacheContext(txKey.cacheId());
- Object val = txKey.key().value(objCtx, true);
+ Object val = txKey.key().value(cctx.cacheObjectContext(), true);
sb.append(e.getValue())
.append(" [key=")
.append(val)
.append(", cache=")
- .append(objCtx.cacheName())
+ .append(cctx.name())
.append("]\n");
}
catch (Exception ex) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
index 9beb296..ee2d1f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessor.java
@@ -27,6 +27,7 @@ import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.IncompleteCacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
@@ -116,7 +117,7 @@ public interface IgniteCacheObjectProcessor extends GridProcessor {
* @return Value bytes.
* @throws IgniteCheckedException If failed.
*/
- public byte[] marshal(CacheObjectContext ctx, Object val) throws IgniteCheckedException;
+ public byte[] marshal(CacheObjectValueContext ctx, Object val) throws IgniteCheckedException;
/**
* @param ctx Context.
@@ -125,7 +126,8 @@ public interface IgniteCacheObjectProcessor extends GridProcessor {
* @return Unmarshalled object.
* @throws IgniteCheckedException If failed.
*/
- public Object unmarshal(CacheObjectContext ctx, byte[] bytes, ClassLoader clsLdr) throws IgniteCheckedException;
+ public Object unmarshal(CacheObjectValueContext ctx, byte[] bytes, ClassLoader clsLdr)
+ throws IgniteCheckedException;
/**
* @param ccfg Cache configuration.
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/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 a8595fb..de9256c 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
@@ -33,6 +33,7 @@ import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectByteArrayImpl;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper;
import org.apache.ignite.internal.processors.cache.IncompleteCacheObject;
@@ -55,8 +56,8 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
/** */
private IgniteBinary noOpBinary = new NoOpBinary();
- /**
- *
+ /*
+ * Static initializer
*/
static {
IMMUTABLE_CLS.add(String.class);
@@ -99,12 +100,12 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
}
/** {@inheritDoc} */
- @Override public byte[] marshal(CacheObjectContext ctx, Object val) throws IgniteCheckedException {
+ @Override public byte[] marshal(CacheObjectValueContext ctx, Object val) throws IgniteCheckedException {
return CU.marshal(ctx.kernalContext().cache().context(), ctx.addDeploymentInfo(), val);
}
/** {@inheritDoc} */
- @Override public Object unmarshal(CacheObjectContext ctx, byte[] bytes, ClassLoader clsLdr)
+ @Override public Object unmarshal(CacheObjectValueContext ctx, byte[] bytes, ClassLoader clsLdr)
throws IgniteCheckedException {
return U.unmarshal(ctx.kernalContext(), bytes, U.resolveClassLoader(clsLdr, ctx.kernalContext().config()));
}
@@ -166,7 +167,7 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
throw new IllegalArgumentException("Byte arrays cannot be used as cache keys.");
case CacheObject.TYPE_REGULAR:
- return new KeyCacheObjectImpl(ctx.processor().unmarshal(ctx, bytes, null), bytes, -1);
+ return new KeyCacheObjectImpl(ctx.kernalContext().cacheObjects().unmarshal(ctx, bytes, null), bytes, -1);
}
throw new IllegalArgumentException("Invalid object type: " + type);
@@ -392,14 +393,18 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
/** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectContext ctx) {
try {
- if (!ctx.processor().immutable(val)) {
+ IgniteCacheObjectProcessor proc = ctx.kernalContext().cacheObjects();
+
+ if (!proc.immutable(val)) {
if (valBytes == null)
- valBytes = ctx.processor().marshal(ctx, val);
+ valBytes = proc.marshal(ctx, val);
+
+ boolean p2pEnabled = ctx.kernalContext().config().isPeerClassLoadingEnabled();
- ClassLoader ldr = ctx.p2pEnabled() ?
+ ClassLoader ldr = p2pEnabled ?
IgniteUtils.detectClassLoader(IgniteUtils.detectClass(this.val)) : U.gridClassLoader();
- Object val = ctx.processor().unmarshal(ctx, valBytes, ldr);
+ Object val = proc.unmarshal(ctx, valBytes, ldr);
KeyCacheObject key = new KeyCacheObjectImpl(val, valBytes, partition());
@@ -443,22 +448,26 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return super.value(ctx, false); // Do not need copy since user value is not in cache.
}
/** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectContext ctx) {
try {
+ IgniteCacheObjectProcessor proc = ctx.kernalContext().cacheObjects();
+
if (valBytes == null)
- valBytes = ctx.processor().marshal(ctx, val);
+ valBytes = proc.marshal(ctx, val);
if (ctx.storeValue()) {
- ClassLoader ldr = ctx.p2pEnabled() ?
+ boolean p2pEnabled = ctx.kernalContext().config().isPeerClassLoadingEnabled();
+
+ ClassLoader ldr = p2pEnabled ?
IgniteUtils.detectClass(this.val).getClassLoader() : val.getClass().getClassLoader();
- Object val = this.val != null && ctx.processor().immutable(this.val) ? this.val :
- ctx.processor().unmarshal(ctx, valBytes, ldr);
+ Object val = this.val != null && proc.immutable(this.val) ? this.val :
+ proc.unmarshal(ctx, valBytes, ldr);
return new CacheObjectImpl(val, valBytes);
}
@@ -493,7 +502,7 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return super.value(ctx, false); // Do not need copy since user value is not in cache.
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
new file mode 100644
index 0000000..08f71c8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/CacheQueryObjectValueContext.java
@@ -0,0 +1,64 @@
+/*
+ * 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.query;
+
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
+
+/**
+ * Cache object value context for queries.
+ */
+public class CacheQueryObjectValueContext implements CacheObjectValueContext {
+ /** Kernal context. */
+ private final GridKernalContext ctx;
+
+ /**
+ * Constructor.
+ *
+ * @param ctx Kernal context.
+ */
+ public CacheQueryObjectValueContext(GridKernalContext ctx) {
+ this.ctx = ctx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public GridKernalContext kernalContext() {
+ return ctx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean copyOnGet() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean storeValue() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return ctx.config().isPeerClassLoadingEnabled() && !binaryEnabled();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean binaryEnabled() {
+ return ctx.config().getMarshaller() instanceof BinaryMarshaller;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
index b006c75..b0e1562 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryCacheObjectsIterator.java
@@ -20,7 +20,9 @@ package org.apache.ignite.internal.processors.query;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
-import org.apache.ignite.internal.processors.cache.GridCacheContext;
+
+import org.apache.ignite.internal.processors.cache.CacheObjectUtils;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
@@ -31,19 +33,20 @@ public class GridQueryCacheObjectsIterator implements Iterator<List<?>>, AutoClo
private final Iterator<List<?>> iter;
/** */
- private final GridCacheContext<?,?> cctx;
+ private final CacheObjectValueContext cacheObjValCtx;
/** */
private final boolean keepBinary;
/**
* @param iter Iterator.
- * @param cctx Cache context.
+ * @param cacheObjValCtx Cache object context.
* @param keepBinary Keep binary.
*/
- public GridQueryCacheObjectsIterator(Iterator<List<?>> iter, GridCacheContext<?,?> cctx, boolean keepBinary) {
+ public GridQueryCacheObjectsIterator(Iterator<List<?>> iter, CacheObjectValueContext cacheObjValCtx,
+ boolean keepBinary) {
this.iter = iter;
- this.cctx = cctx;
+ this.cacheObjValCtx = cacheObjValCtx;
this.keepBinary = keepBinary;
}
@@ -61,7 +64,8 @@ public class GridQueryCacheObjectsIterator implements Iterator<List<?>>, AutoClo
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override public List<?> next() {
- return (List<?>)cctx.unwrapBinariesIfNeeded((Collection<Object>)iter.next(), keepBinary);
+ return ((List<?>)CacheObjectUtils.unwrapBinariesIfNeeded(
+ cacheObjValCtx, (Collection<Object>)iter.next(), keepBinary));
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/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 76cde17..65151c7 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
@@ -1587,10 +1587,10 @@ public class GridQueryProcessor extends GridProcessorAdapter {
try {
CacheObjectContext coctx = cacheObjectContext(cacheName);
- QueryTypeDescriptorImpl desc = typeByValue(coctx, key, val, true);
+ QueryTypeDescriptorImpl desc = typeByValue(cacheName, coctx, key, val, true);
if (prevVal != null) {
- QueryTypeDescriptorImpl prevValDesc = typeByValue(coctx, key, prevVal, false);
+ QueryTypeDescriptorImpl prevValDesc = typeByValue(cacheName, coctx, key, prevVal, false);
if (prevValDesc != null && prevValDesc != desc)
idx.remove(cacheName, prevValDesc, key, partId, prevVal, prevVer);
@@ -1607,6 +1607,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/**
+ * @param cacheName Cache name.
* @param coctx Cache context.
* @param key Key.
* @param val Value.
@@ -1615,7 +1616,8 @@ public class GridQueryProcessor extends GridProcessorAdapter {
* @throws IgniteCheckedException If type check failed.
*/
@SuppressWarnings("ConstantConditions")
- @Nullable private QueryTypeDescriptorImpl typeByValue(CacheObjectContext coctx,
+ @Nullable private QueryTypeDescriptorImpl typeByValue(String cacheName,
+ CacheObjectContext coctx,
KeyCacheObject key,
CacheObject val,
boolean checkType)
@@ -1629,12 +1631,12 @@ public class GridQueryProcessor extends GridProcessorAdapter {
if (binaryVal) {
int typeId = ctx.cacheObjects().typeId(val);
- id = new QueryTypeIdKey(coctx.cacheName(), typeId);
+ id = new QueryTypeIdKey(cacheName, typeId);
}
else {
valCls = val.value(coctx, false).getClass();
- id = new QueryTypeIdKey(coctx.cacheName(), valCls);
+ id = new QueryTypeIdKey(cacheName, valCls);
}
QueryTypeDescriptorImpl desc = types.get(id);
@@ -2078,7 +2080,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
try {
CacheObjectContext coctx = cacheObjectContext(cacheName);
- QueryTypeDescriptorImpl desc = typeByValue(coctx, key, val, false);
+ QueryTypeDescriptorImpl desc = typeByValue(cacheName, coctx, key, val, false);
if (desc == null)
return;
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridRunningQueryInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridRunningQueryInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridRunningQueryInfo.java
index d77c8c0..9e11cdf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridRunningQueryInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridRunningQueryInfo.java
@@ -32,8 +32,8 @@ public class GridRunningQueryInfo {
/** Query type. */
private final GridCacheQueryType qryType;
- /** */
- private final String cache;
+ /** Schema name. */
+ private final String schemaName;
/** */
private final long startTime;
@@ -48,17 +48,17 @@ public class GridRunningQueryInfo {
* @param id Query ID.
* @param qry Query text.
* @param qryType Query type.
- * @param cache Cache where query was executed.
+ * @param schemaName Schema name.
* @param startTime Query start time.
* @param cancel Query cancel.
* @param loc Local query flag.
*/
- public GridRunningQueryInfo(Long id, String qry, GridCacheQueryType qryType, String cache, long startTime,
+ public GridRunningQueryInfo(Long id, String qry, GridCacheQueryType qryType, String schemaName, long startTime,
GridQueryCancel cancel, boolean loc) {
this.id = id;
this.qry = qry;
this.qryType = qryType;
- this.cache = cache;
+ this.schemaName = schemaName;
this.startTime = startTime;
this.cancel = cancel;
this.loc = loc;
@@ -86,10 +86,10 @@ public class GridRunningQueryInfo {
}
/**
- * @return Cache where query was executed.
+ * @return Schema name.
*/
- public String cache() {
- return cache;
+ public String schemaName() {
+ return schemaName;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
index 8d00dd6..9d1da00 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
@@ -90,7 +90,7 @@ public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<VisorRu
long curTime = U.currentTimeMillis();
for (GridRunningQueryInfo qry : queries)
- res.add(new VisorRunningQuery(qry.id(), qry.query(), qry.queryType(), qry.cache(),
+ res.add(new VisorRunningQuery(qry.id(), qry.query(), qry.queryType(), qry.schemaName(),
qry.startTime(), curTime - qry.startTime(),
qry.cancelable(), qry.local()));
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java
index a49e095..e144325 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridAffinityNoCacheSelfTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.cache.affinity.Affinity;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityImpl;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.plugin.extensions.communication.MessageReader;
@@ -235,7 +236,7 @@ public class GridAffinityNoCacheSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
A.notNull(ctx, "ctx");
return (T)val;
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
index 5be277a..77b6836 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteIncompleteCacheObjectSelfTest.java
@@ -102,7 +102,7 @@ public class IgniteIncompleteCacheObjectSelfTest extends GridCommonAbstractTest
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(final CacheObjectContext ctx, final boolean cpy) {
+ @Nullable @Override public <T> T value(final CacheObjectValueContext ctx, final boolean cpy) {
return null;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java
index 5f61bd6..a487218 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
@@ -463,7 +464,7 @@ public class FreeListImplSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
+ @Nullable @Override public <T> T value(CacheObjectValueContext ctx, boolean cpy) {
return (T)data;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
index 0474aeb..352fe85 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java
@@ -282,7 +282,7 @@ public class DmlStatementsProcessor {
QueryCursorImpl<List<?>> stepCur = new QueryCursorImpl<>(new Iterable<List<?>>() {
@Override public Iterator<List<?>> iterator() {
try {
- return new GridQueryCacheObjectsIterator(res.iterator(), cctx, cctx.keepBinary());
+ return new GridQueryCacheObjectsIterator(res.iterator(), idx.valueContext(), cctx.keepBinary());
}
catch (IgniteCheckedException e) {
throw new IgniteException(e);
@@ -372,7 +372,7 @@ public class DmlStatementsProcessor {
cur = new QueryCursorImpl<>(new Iterable<List<?>>() {
@Override public Iterator<List<?>> iterator() {
try {
- return new GridQueryCacheObjectsIterator(res.iterator(), cctx, cctx.keepBinary());
+ return new GridQueryCacheObjectsIterator(res.iterator(), idx.valueContext(), cctx.keepBinary());
}
catch (IgniteCheckedException e) {
throw new IgniteException(e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index c94c215..508c8be 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -63,6 +63,7 @@ import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheAffinityManager;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -78,6 +79,7 @@ import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery;
import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
import org.apache.ignite.internal.processors.cache.query.QueryTable;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.query.CacheQueryObjectValueContext;
import org.apache.ignite.internal.processors.query.GridQueryCacheObjectsIterator;
import org.apache.ignite.internal.processors.query.GridQueryCancel;
import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
@@ -303,6 +305,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
/** */
protected volatile GridKernalContext ctx;
+ /** Cache object value context. */
+ protected CacheQueryObjectValueContext valCtx;
+
/** */
private DmlStatementsProcessor dmlProc;
@@ -339,14 +344,6 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
/**
- * @param cacheName Cache name.
- * @return Connection.
- */
- public Connection connectionForCache(String cacheName) {
- return connectionForSchema(schema(cacheName));
- }
-
- /**
* @param schema Schema.
* @return Connection.
*/
@@ -403,7 +400,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
/** {@inheritDoc} */
@Override public PreparedStatement prepareNativeStatement(String cacheName, String sql) throws SQLException {
- return prepareStatement(connectionForCache(cacheName), sql, true);
+ String schemaName = schema(cacheName);
+
+ return prepareStatement(connectionForSchema(schemaName), sql, true);
}
/** {@inheritDoc} */
@@ -918,7 +917,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
/** {@inheritDoc} */
@Override public long streamUpdateQuery(String cacheName, String qry,
@Nullable Object[] params, IgniteDataStreamer<?, ?> streamer) throws IgniteCheckedException {
- final Connection conn = connectionForCache(cacheName);
+ String schemaName = schema(cacheName);
+
+ final Connection conn = connectionForSchema(schemaName);
final PreparedStatement stmt;
@@ -1117,7 +1118,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
QueryCursorImpl<List<?>> cursor = new QueryCursorImpl<>(new Iterable<List<?>>() {
@Override public Iterator<List<?>> iterator() {
try {
- return new GridQueryCacheObjectsIterator(res.iterator(), cctx, keepBinary);
+ return new GridQueryCacheObjectsIterator(res.iterator(), valueContext(), keepBinary);
}
catch (IgniteCheckedException e) {
throw new IgniteException(e);
@@ -1231,7 +1232,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
/**
- * @param cctx Cache context.
+ * @param schemaName Schema name.
* @param qry Query.
* @param keepCacheObj Flag to keep cache object.
* @param enforceJoinOrder Enforce join order of tables.
@@ -1239,7 +1240,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
* @return Iterable result.
*/
private Iterable<List<?>> runQueryTwoStep(
- final GridCacheContext<?,?> cctx,
+ final String schemaName,
final GridCacheTwoStepQuery qry,
final boolean keepCacheObj,
final boolean enforceJoinOrder,
@@ -1250,7 +1251,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
) {
return new Iterable<List<?>>() {
@Override public Iterator<List<?>> iterator() {
- return rdcQryExec.query(cctx, qry, keepCacheObj, enforceJoinOrder, timeoutMillis, cancel, params,
+ return rdcQryExec.query(schemaName, qry, keepCacheObj, enforceJoinOrder, timeoutMillis, cancel, params,
parts);
}
};
@@ -1484,7 +1485,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
cancel = new GridQueryCancel();
QueryCursorImpl<List<?>> cursor = new QueryCursorImpl<>(
- runQueryTwoStep(cctx, twoStepQry, keepBinary, enforceJoinOrder, qry.getTimeout(), cancel,
+ runQueryTwoStep(schemaName, twoStepQry, keepBinary, enforceJoinOrder, qry.getTimeout(), cancel,
qry.getArgs(), qry.getPartitions()), cancel);
cursor.fieldsMeta(meta);
@@ -1900,12 +1901,14 @@ public class IgniteH2Indexing implements GridQueryIndexing {
* @throws IgniteCheckedException If failed or {@code -1} if the type is unknown.
*/
long size(String cacheName, String typeName) throws IgniteCheckedException {
+ String schemaName = schema(cacheName);
+
H2TableDescriptor tbl = tableDescriptor(typeName, cacheName);
if (tbl == null)
return -1;
- Connection conn = connectionForCache(cacheName);
+ Connection conn = connectionForSchema(schemaName);
H2Utils.setupConnection(conn, false, false);
@@ -1999,6 +2002,8 @@ public class IgniteH2Indexing implements GridQueryIndexing {
else {
this.ctx = ctx;
+ valCtx = new CacheQueryObjectValueContext(ctx);
+
nodeId = ctx.localNodeId();
marshaller = ctx.config().getMarshaller();
@@ -2031,6 +2036,13 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
/**
+ * @return Value context.
+ */
+ public CacheObjectValueContext valueContext() {
+ return valCtx;
+ }
+
+ /**
* @param topic Topic.
* @param topicOrd Topic ordinal for {@link GridTopic}.
* @param nodes Nodes.
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
index 48c0cb9..93ebc71 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
@@ -356,7 +356,7 @@ public class GridLuceneIndex implements AutoCloseable {
if (coctx == null) // For tests.
return (Z)JdbcUtils.deserialize(bytes, null);
- return (Z)coctx.processor().unmarshal(coctx, bytes, ldr);
+ return (Z)coctx.kernalContext().cacheObjects().unmarshal(coctx, bytes, ldr);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/aad3b0c5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
index 6fff8de..b7bdde5 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
@@ -579,7 +579,9 @@ public class GridMapQueryExecutor {
}
}
- Connection conn = h2.connectionForCache(mainCctx.name());
+ String schemaName = h2.schema(mainCctx.name());
+
+ Connection conn = h2.connectionForSchema(schemaName);
H2Utils.setupConnection(conn, distributedJoinMode != OFF, enforceJoinOrder);