You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/11/05 17:28:58 UTC
[38/50] [abbrv] ignite git commit: Merged IGNITE-950-new into
IGNITE-1282
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
deleted file mode 100644
index 89bb3ff..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
+++ /dev/null
@@ -1,570 +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.portable.builder;
-
-import org.apache.ignite.internal.portable.GridPortableMarshaller;
-import org.apache.ignite.internal.portable.PortableContext;
-import org.apache.ignite.internal.portable.PortableObjectImpl;
-import org.apache.ignite.internal.portable.PortableObjectOffheapImpl;
-import org.apache.ignite.internal.portable.PortableUtils;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
-import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl;
-import org.apache.ignite.internal.util.GridArgumentCheck;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.portable.PortableBuilder;
-import org.apache.ignite.portable.PortableException;
-import org.apache.ignite.portable.PortableInvalidClassException;
-import org.apache.ignite.portable.PortableMetadata;
-import org.apache.ignite.portable.PortableObject;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DFLT_HDR_LEN;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLAGS_POS;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.HASH_CODE_POS;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.PROTO_VER_POS;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.TYPE_ID_POS;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.UNREGISTERED_TYPE_ID;
-
-/**
- *
- */
-public class PortableBuilderImpl implements PortableBuilder {
- /** */
- private static final Object REMOVED_FIELD_MARKER = new Object();
-
- /** */
- private final PortableContext ctx;
-
- /** */
- private final int typeId;
-
- /** May be null. */
- private String typeName;
-
- /** May be null. */
- private String clsNameToWrite;
-
- /** */
- private boolean registeredType = true;
-
- /** */
- private Map<String, Object> assignedVals;
-
- /** */
- private Map<Integer, Object> readCache;
-
- /** Position of object in source array, or -1 if object is not created from PortableObject. */
- private final int start;
-
- /** Flags. */
- private final short flags;
-
- /** Total header length */
- private final int hdrLen;
-
- /** Context of PortableObject reading process. Or {@code null} if object is not created from PortableObject. */
- private final PortableBuilderReader reader;
-
- /** */
- private int hashCode;
-
- /**
- * @param clsName Class name.
- * @param ctx Portable context.
- */
- public PortableBuilderImpl(PortableContext ctx, String clsName) {
- this(ctx, ctx.typeId(clsName), PortableContext.typeName(clsName));
- }
-
- /**
- * @param typeId Type ID.
- * @param ctx Portable context.
- */
- public PortableBuilderImpl(PortableContext ctx, int typeId) {
- this(ctx, typeId, null);
- }
-
- /**
- * @param typeName Type name.
- * @param ctx Context.
- * @param typeId Type id.
- */
- public PortableBuilderImpl(PortableContext ctx, int typeId, String typeName) {
- this.typeId = typeId;
- this.typeName = typeName;
- this.ctx = ctx;
-
- start = -1;
- flags = -1;
- reader = null;
- hdrLen = DFLT_HDR_LEN;
-
- readCache = Collections.emptyMap();
- }
-
- /**
- * @param obj Object to wrap.
- */
- public PortableBuilderImpl(PortableObjectImpl obj) {
- this(new PortableBuilderReader(obj), obj.start());
-
- reader.registerObject(this);
- }
-
- /**
- * @param reader ctx
- * @param start Start.
- */
- PortableBuilderImpl(PortableBuilderReader reader, int start) {
- this.reader = reader;
- this.start = start;
- this.flags = reader.readShortPositioned(start + FLAGS_POS);
-
- byte ver = reader.readBytePositioned(start + PROTO_VER_POS);
-
- PortableUtils.checkProtocolVersion(ver);
-
- int typeId = reader.readIntPositioned(start + TYPE_ID_POS);
- ctx = reader.portableContext();
- hashCode = reader.readIntPositioned(start + HASH_CODE_POS);
-
- if (typeId == UNREGISTERED_TYPE_ID) {
- int mark = reader.position();
-
- reader.position(start + DFLT_HDR_LEN);
-
- clsNameToWrite = reader.readString();
-
- Class cls;
-
- try {
- // TODO: IGNITE-1272 - Is class loader needed here?
- cls = U.forName(clsNameToWrite, null);
- }
- catch (ClassNotFoundException e) {
- throw new PortableInvalidClassException("Failed to load the class: " + clsNameToWrite, e);
- }
-
- this.typeId = ctx.descriptorForClass(cls).typeId();
-
- registeredType = false;
-
- hdrLen = reader.position() - mark;
-
- reader.position(mark);
- }
- else {
- this.typeId = typeId;
- hdrLen = DFLT_HDR_LEN;
- }
- }
-
- /** {@inheritDoc} */
- @Override public PortableObject build() {
- try (PortableWriterExImpl writer = new PortableWriterExImpl(ctx, typeId, false)) {
-
- PortableBuilderSerializer serializationCtx = new PortableBuilderSerializer();
-
- serializationCtx.registerObjectWriting(this, 0);
-
- serializeTo(writer, serializationCtx);
-
- byte[] arr = writer.array();
-
- return new PortableObjectImpl(ctx, arr, 0);
- }
- }
-
- /**
- * @param writer Writer.
- * @param serializer Serializer.
- */
- void serializeTo(PortableWriterExImpl writer, PortableBuilderSerializer serializer) {
- try {
- PortableUtils.writeHeader(writer,
- true,
- registeredType ? typeId : UNREGISTERED_TYPE_ID,
- hashCode,
- registeredType ? null : clsNameToWrite);
-
- Set<Integer> remainsFlds = null;
-
- if (reader != null) {
- Map<Integer, Object> assignedFldsById;
-
- if (assignedVals != null) {
- assignedFldsById = U.newHashMap(assignedVals.size());
-
- for (Map.Entry<String, Object> entry : assignedVals.entrySet()) {
- int fldId = ctx.fieldId(typeId, entry.getKey());
-
- assignedFldsById.put(fldId, entry.getValue());
- }
-
- remainsFlds = assignedFldsById.keySet();
- } else
- assignedFldsById = Collections.emptyMap();
-
- // Get footer details.
- int fieldOffsetSize = PortableUtils.fieldOffsetSize(flags);
-
- IgniteBiTuple<Integer, Integer> footer = PortableUtils.footerAbsolute(reader, start, fieldOffsetSize);
-
- int footerPos = footer.get1();
- int footerEnd = footer.get2();
-
- // Get raw position.
- int rawPos = PortableUtils.rawOffsetAbsolute(reader, start, fieldOffsetSize);
-
- // Position reader on data.
- reader.position(start + hdrLen);
-
- while (reader.position() + 4 < rawPos) {
- int fieldId = reader.readIntPositioned(footerPos);
- int fieldLen = fieldPositionAndLength(footerPos, footerEnd, rawPos, fieldOffsetSize).get2();
-
- int postPos = reader.position() + fieldLen; // Position where reader will be placed afterwards.
-
- footerPos += 4 + fieldOffsetSize;
-
- if (assignedFldsById.containsKey(fieldId)) {
- Object assignedVal = assignedFldsById.remove(fieldId);
-
- if (assignedVal != REMOVED_FIELD_MARKER) {
- writer.writeFieldId(fieldId);
-
- serializer.writeValue(writer, assignedVal);
- }
- }
- else {
- int type = fieldLen != 0 ? reader.readByte(0) : 0;
-
- if (fieldLen != 0 && !PortableUtils.isPlainArrayType(type) && PortableUtils.isPlainType(type)) {
- writer.writeFieldId(fieldId);
-
- writer.write(reader.array(), reader.position(), fieldLen);
- }
- else {
- writer.writeFieldId(fieldId);
-
- Object val;
-
- if (fieldLen == 0)
- val = null;
- else if (readCache == null) {
- val = reader.parseValue();
-
- assert reader.position() == postPos;
- }
- else
- val = readCache.get(fieldId);
-
- serializer.writeValue(writer, val);
- }
- }
-
- reader.position(postPos);
- }
- }
-
- if (assignedVals != null && (remainsFlds == null || !remainsFlds.isEmpty())) {
- boolean metadataEnabled = ctx.isMetaDataEnabled(typeId);
-
- PortableMetadata metadata = null;
-
- if (metadataEnabled)
- metadata = ctx.metaData(typeId);
-
- Map<String, String> newFldsMetadata = null;
-
- for (Map.Entry<String, Object> entry : assignedVals.entrySet()) {
- Object val = entry.getValue();
-
- if (val == REMOVED_FIELD_MARKER)
- continue;
-
- String name = entry.getKey();
-
- int fldId = ctx.fieldId(typeId, name);
-
- if (remainsFlds != null && !remainsFlds.contains(fldId))
- continue;
-
- writer.writeFieldId(fldId);
-
- serializer.writeValue(writer, val);
-
- if (metadataEnabled) {
- String oldFldTypeName = metadata == null ? null : metadata.fieldTypeName(name);
-
- String newFldTypeName;
-
- if (val instanceof PortableValueWithType)
- newFldTypeName = ((PortableValueWithType) val).typeName();
- else {
- byte type = PortableUtils.typeByClass(val.getClass());
-
- newFldTypeName = CacheObjectPortableProcessorImpl.fieldTypeName(type);
- }
-
- if (oldFldTypeName == null) {
- // It's a new field, we have to add it to metadata.
-
- if (newFldsMetadata == null)
- newFldsMetadata = new HashMap<>();
-
- newFldsMetadata.put(name, newFldTypeName);
- }
- else {
- String objTypeName =
- CacheObjectPortableProcessorImpl.FIELD_TYPE_NAMES[GridPortableMarshaller.OBJ];
-
- if (!objTypeName.equals(oldFldTypeName) && !oldFldTypeName.equals(newFldTypeName)) {
- throw new PortableException(
- "Wrong value has been set [" +
- "typeName=" + (typeName == null ? metadata.typeName() : typeName) +
- ", fieldName=" + name +
- ", fieldType=" + oldFldTypeName +
- ", assignedValueType=" + newFldTypeName + ']'
- );
- }
- }
- }
- }
-
- if (newFldsMetadata != null) {
- String typeName = this.typeName;
-
- if (typeName == null)
- typeName = metadata.typeName();
-
- ctx.updateMetaData(typeId, typeName, newFldsMetadata);
- }
- }
-
- if (reader != null) {
- // Write raw data if any.
- int fieldOffsetSize = PortableUtils.fieldOffsetSize(flags);
-
- int rawOff = PortableUtils.rawOffsetAbsolute(reader, start, fieldOffsetSize);
- int footerStart = PortableUtils.footerStartAbsolute(reader, start);
-
- if (rawOff < footerStart) {
- writer.rawWriter();
-
- writer.write(reader.array(), rawOff, footerStart - rawOff);
- }
-
- // Shift reader to the end of the object.
- reader.position(start + PortableUtils.length(reader, start));
- }
-
- writer.postWrite(true);
- }
- finally {
- writer.popSchema();
- }
- }
-
- /** {@inheritDoc} */
- @Override public PortableBuilderImpl hashCode(int hashCode) {
- this.hashCode = hashCode;
-
- return this;
- }
-
- /**
- * Get field position and length.
- *
- * @param footerPos Field position inside the footer (absolute).
- * @param footerEnd Footer end (absolute).
- * @param rawPos Raw data position (absolute).
- * @param fieldOffsetSize Size of field's offset.
- * @return Tuple with field position and length.
- */
- private IgniteBiTuple<Integer, Integer> fieldPositionAndLength(int footerPos, int footerEnd, int rawPos,
- int fieldOffsetSize) {
- // Get field offset first.
- int fieldOffset = PortableUtils.fieldOffsetRelative(reader, footerPos + 4, fieldOffsetSize);
- int fieldPos = start + fieldOffset;
-
- // Get field length.
- int fieldLen;
-
- if (footerPos + 4 + fieldOffsetSize == footerEnd)
- // This is the last field, compare to raw offset.
- fieldLen = rawPos - fieldPos;
- else {
- // Field is somewhere in the middle, get difference with the next offset.
- int nextFieldOffset = PortableUtils.fieldOffsetRelative(reader, footerPos + 4 + fieldOffsetSize + 4,
- fieldOffsetSize);
-
- fieldLen = nextFieldOffset - fieldOffset;
- }
-
- return F.t(fieldPos, fieldLen);
- }
-
- /**
- * Initialize read cache if needed.
- */
- private void ensureReadCacheInit() {
- if (readCache == null) {
- int fieldOffsetSize = PortableUtils.fieldOffsetSize(flags);
-
- Map<Integer, Object> readCache = new HashMap<>();
-
- IgniteBiTuple<Integer, Integer> footer = PortableUtils.footerAbsolute(reader, start, fieldOffsetSize);
-
- int footerPos = footer.get1();
- int footerEnd = footer.get2();
-
- int rawPos = PortableUtils.rawOffsetAbsolute(reader, start, fieldOffsetSize);
-
- while (footerPos + 4 < footerEnd) {
- int fieldId = reader.readIntPositioned(footerPos);
-
- IgniteBiTuple<Integer, Integer> posAndLen =
- fieldPositionAndLength(footerPos, footerEnd, rawPos, fieldOffsetSize);
-
- Object val = reader.getValueQuickly(posAndLen.get1(), posAndLen.get2());
-
- readCache.put(fieldId, val);
-
- // Shift current footer position.
- footerPos += 4 + fieldOffsetSize;
- }
-
- this.readCache = readCache;
- }
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Override public <T> T getField(String name) {
- Object val;
-
- if (assignedVals != null && assignedVals.containsKey(name)) {
- val = assignedVals.get(name);
-
- if (val == REMOVED_FIELD_MARKER)
- return null;
- }
- else {
- ensureReadCacheInit();
-
- int fldId = ctx.fieldId(typeId, name);
-
- val = readCache.get(fldId);
- }
-
- return (T)PortableUtils.unwrapLazy(val);
- }
-
- /** {@inheritDoc} */
- @Override public PortableBuilder setField(String name, Object val) {
- GridArgumentCheck.notNull(val, name);
-
- if (assignedVals == null)
- assignedVals = new LinkedHashMap<>();
-
- Object oldVal = assignedVals.put(name, val);
-
- if (oldVal instanceof PortableValueWithType) {
- ((PortableValueWithType)oldVal).value(val);
-
- assignedVals.put(name, oldVal);
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override public <T> PortableBuilder setField(String name, @Nullable T val, Class<? super T> type) {
- if (assignedVals == null)
- assignedVals = new LinkedHashMap<>();
-
- //int fldId = ctx.fieldId(typeId, fldName);
-
- assignedVals.put(name, new PortableValueWithType(PortableUtils.typeByClass(type), val));
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override public PortableBuilder setField(String name, @Nullable PortableBuilder builder) {
- if (builder == null)
- return setField(name, null, Object.class);
- else
- return setField(name, (Object)builder);
- }
-
- /**
- * Removes field from portable object.
- *
- * @param name Field name.
- * @return {@code this} instance for chaining.
- */
- @Override public PortableBuilderImpl removeField(String name) {
- if (assignedVals == null)
- assignedVals = new LinkedHashMap<>();
-
- assignedVals.put(name, REMOVED_FIELD_MARKER);
-
- return this;
- }
-
- /**
- * Creates builder initialized by specified portable object.
- *
- * @param obj Portable object to initialize builder.
- * @return New builder.
- */
- public static PortableBuilderImpl wrap(PortableObject obj) {
- PortableObjectImpl heapObj;
-
- if (obj instanceof PortableObjectOffheapImpl)
- heapObj = (PortableObjectImpl)((PortableObjectOffheapImpl)obj).heapCopy();
- else
- heapObj = (PortableObjectImpl)obj;
-
- return new PortableBuilderImpl(heapObj);
- }
-
- /**
- * @return Object start position in source array.
- */
- int start() {
- return start;
- }
-
- /**
- * @return Object type id.
- */
- public int typeId() {
- return typeId;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
index 9645ced..d2a3ac2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
@@ -23,13 +23,13 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.ignite.internal.portable.GridPortableMarshaller;
import org.apache.ignite.internal.portable.PortableContext;
-import org.apache.ignite.internal.portable.PortableObjectImpl;
import org.apache.ignite.internal.portable.PortablePositionReadable;
+import org.apache.ignite.internal.portable.BinaryObjectImpl;
import org.apache.ignite.internal.portable.PortablePrimitives;
-import org.apache.ignite.internal.portable.PortableReaderExImpl;
+import org.apache.ignite.internal.portable.BinaryReaderExImpl;
import org.apache.ignite.internal.portable.PortableUtils;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
-import org.apache.ignite.portable.PortableException;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
+import org.apache.ignite.binary.BinaryObjectException;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL;
@@ -40,13 +40,13 @@ import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING;
*/
public class PortableBuilderReader implements PortablePositionReadable {
/** */
- private final Map<Integer, PortableBuilderImpl> objMap = new HashMap<>();
+ private final Map<Integer, BinaryObjectBuilderImpl> objMap = new HashMap<>();
/** */
private final PortableContext ctx;
/** */
- private final PortableReaderExImpl reader;
+ private final BinaryReaderExImpl reader;
/** */
private byte[] arr;
@@ -57,13 +57,13 @@ public class PortableBuilderReader implements PortablePositionReadable {
/**
* @param objImpl Portable object
*/
- PortableBuilderReader(PortableObjectImpl objImpl) {
+ PortableBuilderReader(BinaryObjectImpl objImpl) {
ctx = objImpl.context();
arr = objImpl.array();
pos = objImpl.start();
// TODO: IGNITE-1272 - Is class loader needed here?
- reader = new PortableReaderExImpl(portableContext(), arr, pos, null);
+ reader = new BinaryReaderExImpl(portableContext(), arr, pos, null);
}
/**
@@ -76,7 +76,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
/**
* @param obj Mutable portable object.
*/
- public void registerObject(PortableBuilderImpl obj) {
+ public void registerObject(BinaryObjectBuilderImpl obj) {
objMap.put(obj.start(), obj);
}
@@ -170,7 +170,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
return null;
if (flag != STRING)
- throw new PortableException("Failed to deserialize String.");
+ throw new BinaryObjectException("Failed to deserialize String.");
boolean convert = readBoolean();
int len = readInt();
@@ -338,7 +338,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
break;
default:
- throw new PortableException("Invalid flag value: " + type);
+ throw new BinaryObjectException("Invalid flag value: " + type);
}
pos += len;
@@ -359,10 +359,10 @@ public class PortableBuilderReader implements PortablePositionReadable {
case GridPortableMarshaller.HANDLE: {
int objStart = pos - readIntPositioned(pos + 1);
- PortableBuilderImpl res = objMap.get(objStart);
+ BinaryObjectBuilderImpl res = objMap.get(objStart);
if (res == null) {
- res = new PortableBuilderImpl(this, objStart);
+ res = new BinaryObjectBuilderImpl(this, objStart);
objMap.put(objStart, res);
}
@@ -371,10 +371,10 @@ public class PortableBuilderReader implements PortablePositionReadable {
}
case GridPortableMarshaller.OBJ: {
- PortableBuilderImpl res = objMap.get(pos);
+ BinaryObjectBuilderImpl res = objMap.get(pos);
if (res == null) {
- res = new PortableBuilderImpl(this, pos);
+ res = new BinaryObjectBuilderImpl(this, pos);
objMap.put(pos, res);
}
@@ -455,13 +455,13 @@ public class PortableBuilderReader implements PortablePositionReadable {
int start = readIntPositioned(pos + 4 + size);
- PortableObjectImpl portableObj = new PortableObjectImpl(ctx, arr, pos + 4 + start);
+ BinaryObjectImpl portableObj = new BinaryObjectImpl(ctx, arr, pos + 4 + start);
return new PortablePlainPortableObject(portableObj);
}
default:
- throw new PortableException("Invalid flag value: " + type);
+ throw new BinaryObjectException("Invalid flag value: " + type);
}
}
@@ -484,10 +484,10 @@ public class PortableBuilderReader implements PortablePositionReadable {
case GridPortableMarshaller.HANDLE: {
int objStart = pos - 1 - readInt();
- PortableBuilderImpl res = objMap.get(objStart);
+ BinaryObjectBuilderImpl res = objMap.get(objStart);
if (res == null) {
- res = new PortableBuilderImpl(this, objStart);
+ res = new BinaryObjectBuilderImpl(this, objStart);
objMap.put(objStart, res);
}
@@ -498,10 +498,10 @@ public class PortableBuilderReader implements PortablePositionReadable {
case GridPortableMarshaller.OBJ: {
pos--;
- PortableBuilderImpl res = objMap.get(pos);
+ BinaryObjectBuilderImpl res = objMap.get(pos);
if (res == null) {
- res = new PortableBuilderImpl(this, pos);
+ res = new BinaryObjectBuilderImpl(this, pos);
objMap.put(pos, res);
}
@@ -633,7 +633,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
if (flag == GridPortableMarshaller.NULL) continue;
if (flag != GridPortableMarshaller.DATE)
- throw new PortableException("Invalid flag value: " + flag);
+ throw new BinaryObjectException("Invalid flag value: " + flag);
long time = PortablePrimitives.readLong(arr, pos);
@@ -657,7 +657,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
continue;
if (flag != GridPortableMarshaller.TIMESTAMP)
- throw new PortableException("Invalid flag value: " + flag);
+ throw new BinaryObjectException("Invalid flag value: " + flag);
long time = PortablePrimitives.readLong(arr, pos);
@@ -719,7 +719,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
return new PortableLazySet(this, size);
}
- throw new PortableException("Unknown collection type: " + colType);
+ throw new BinaryObjectException("Unknown collection type: " + colType);
}
case GridPortableMarshaller.MAP:
@@ -741,14 +741,14 @@ public class PortableBuilderReader implements PortablePositionReadable {
int start = readInt();
- PortableObjectImpl portableObj = new PortableObjectImpl(ctx, arr,
+ BinaryObjectImpl portableObj = new BinaryObjectImpl(ctx, arr,
pos - 4 - size + start);
return new PortablePlainPortableObject(portableObj);
}
default:
- throw new PortableException("Invalid flag value: " + type);
+ throw new BinaryObjectException("Invalid flag value: " + type);
}
PortableAbstractLazyValue res;
@@ -794,7 +794,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
/**
* @return Reader.
*/
- PortableReaderExImpl reader() {
+ BinaryReaderExImpl reader() {
return reader;
}
@@ -829,7 +829,7 @@ public class PortableBuilderReader implements PortablePositionReadable {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
ctx.writeValue(writer, wrappedCollection());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializationAware.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializationAware.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializationAware.java
index 976059a..a750f6c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializationAware.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializationAware.java
@@ -27,5 +27,5 @@ interface PortableBuilderSerializationAware {
* @param writer Writer.
* @param ctx Context.
*/
- public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx);
+ public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
index fa08d79..0e8eaa4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
@@ -17,12 +17,12 @@
package org.apache.ignite.internal.portable.builder;
+import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.internal.portable.GridPortableMarshaller;
-import org.apache.ignite.internal.portable.PortableObjectEx;
+import org.apache.ignite.internal.portable.BinaryObjectEx;
import org.apache.ignite.internal.portable.PortableUtils;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
import org.apache.ignite.internal.util.*;
-import org.apache.ignite.portable.*;
import java.util.*;
@@ -31,16 +31,16 @@ import java.util.*;
*/
class PortableBuilderSerializer {
/** */
- private final Map<PortableBuilderImpl, Integer> objToPos = new IdentityHashMap<>();
+ private final Map<BinaryObjectBuilderImpl, Integer> objToPos = new IdentityHashMap<>();
/** */
- private Map<PortableObject, PortableBuilderImpl> portableObjToWrapper;
+ private Map<BinaryObject, BinaryObjectBuilderImpl> portableObjToWrapper;
/**
* @param obj Mutable object.
* @param posInResArr Object position in the array.
*/
- public void registerObjectWriting(PortableBuilderImpl obj, int posInResArr) {
+ public void registerObjectWriting(BinaryObjectBuilderImpl obj, int posInResArr) {
objToPos.put(obj, posInResArr);
}
@@ -48,7 +48,7 @@ class PortableBuilderSerializer {
* @param writer Writer.
* @param val Value.
*/
- public void writeValue(PortableWriterExImpl writer, Object val) {
+ public void writeValue(BinaryWriterExImpl writer, Object val) {
if (val == null) {
writer.writeByte(GridPortableMarshaller.NULL);
@@ -61,23 +61,23 @@ class PortableBuilderSerializer {
return;
}
- if (val instanceof PortableObjectEx) {
+ if (val instanceof BinaryObjectEx) {
if (portableObjToWrapper == null)
portableObjToWrapper = new IdentityHashMap<>();
- PortableBuilderImpl wrapper = portableObjToWrapper.get(val);
+ BinaryObjectBuilderImpl wrapper = portableObjToWrapper.get(val);
if (wrapper == null) {
- wrapper = PortableBuilderImpl.wrap((PortableObject)val);
+ wrapper = BinaryObjectBuilderImpl.wrap((BinaryObject)val);
- portableObjToWrapper.put((PortableObject)val, wrapper);
+ portableObjToWrapper.put((BinaryObject)val, wrapper);
}
val = wrapper;
}
- if (val instanceof PortableBuilderImpl) {
- PortableBuilderImpl obj = (PortableBuilderImpl)val;
+ if (val instanceof BinaryObjectBuilderImpl) {
+ BinaryObjectBuilderImpl obj = (BinaryObjectBuilderImpl)val;
Integer posInResArr = objToPos.get(obj);
@@ -186,7 +186,7 @@ class PortableBuilderSerializer {
* @param arr The array.
* @param compTypeId Component type ID.
*/
- public void writeArray(PortableWriterExImpl writer, byte elementType, Object[] arr, int compTypeId) {
+ public void writeArray(BinaryWriterExImpl writer, byte elementType, Object[] arr, int compTypeId) {
writer.writeByte(elementType);
writer.writeInt(compTypeId);
writer.writeInt(arr.length);
@@ -201,7 +201,7 @@ class PortableBuilderSerializer {
* @param arr The array.
* @param clsName Component class name.
*/
- public void writeArray(PortableWriterExImpl writer, byte elementType, Object[] arr, String clsName) {
+ public void writeArray(BinaryWriterExImpl writer, byte elementType, Object[] arr, String clsName) {
writer.writeByte(elementType);
writer.writeInt(GridPortableMarshaller.UNREGISTERED_TYPE_ID);
writer.writeString(clsName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableEnumArrayLazyValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableEnumArrayLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableEnumArrayLazyValue.java
index d864a6e..1e2ebc9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableEnumArrayLazyValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableEnumArrayLazyValue.java
@@ -18,10 +18,10 @@
package org.apache.ignite.internal.portable.builder;
import org.apache.ignite.internal.portable.GridPortableMarshaller;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.portable.PortableException;
-import org.apache.ignite.portable.PortableInvalidClassException;
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryInvalidTypeException;
/**
*
@@ -54,7 +54,7 @@ class PortableEnumArrayLazyValue extends PortableAbstractLazyValue {
cls = U.forName(reader.readString(), null);
}
catch (ClassNotFoundException e) {
- throw new PortableInvalidClassException("Failed to load the class: " + clsName, e);
+ throw new BinaryInvalidTypeException("Failed to load the class: " + clsName, e);
}
compTypeId = reader.portableContext().descriptorForClass(cls).typeId();
@@ -90,7 +90,7 @@ class PortableEnumArrayLazyValue extends PortableAbstractLazyValue {
continue;
if (flag != GridPortableMarshaller.ENUM)
- throw new PortableException("Invalid flag value: " + flag);
+ throw new BinaryObjectException("Invalid flag value: " + flag);
res[i] = new PortableBuilderEnum(reader);
}
@@ -99,7 +99,7 @@ class PortableEnumArrayLazyValue extends PortableAbstractLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (val != null) {
if (clsName != null)
ctx.writeArray(writer, GridPortableMarshaller.ENUM_ARR, (Object[])val, clsName);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyArrayList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyArrayList.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyArrayList.java
index f29872e..29bbe85 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyArrayList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyArrayList.java
@@ -131,7 +131,7 @@ class PortableLazyArrayList extends AbstractList<Object> implements PortableBuil
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (delegate == null) {
int size = reader.readIntPositioned(off + 1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyLinkedList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyLinkedList.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyLinkedList.java
index 4940311..3271aaa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyLinkedList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyLinkedList.java
@@ -188,7 +188,7 @@ class PortableLazyLinkedList extends AbstractList<Object> implements PortableBui
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (delegate == null) {
int size = reader.readIntPositioned(off + 1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMap.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMap.java
index 74bd4c4..32d4f44 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMap.java
@@ -85,7 +85,7 @@ class PortableLazyMap extends AbstractMap<Object, Object> implements PortableBui
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (delegate == null) {
int size = reader.readIntPositioned(off + 1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMapEntry.java
index bd027f5..5ebb223 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazyMapEntry.java
@@ -59,7 +59,7 @@ class PortableLazyMapEntry implements Map.Entry<Object, Object>, PortableBuilder
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
writer.writeByte(GridPortableMarshaller.MAP_ENTRY);
ctx.writeValue(writer, key);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazySet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazySet.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazySet.java
index c1099eb..7e62aa4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazySet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableLazySet.java
@@ -21,7 +21,7 @@ import java.util.Collection;
import java.util.Set;
import org.apache.ignite.internal.portable.GridPortableMarshaller;
import org.apache.ignite.internal.portable.PortableUtils;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
@@ -47,7 +47,7 @@ class PortableLazySet extends PortableAbstractLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (val == null) {
int size = reader.readIntPositioned(off + 1);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableModifiableLazyValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableModifiableLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableModifiableLazyValue.java
index 09fb844..2b439c8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableModifiableLazyValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableModifiableLazyValue.java
@@ -43,7 +43,7 @@ public class PortableModifiableLazyValue extends PortableAbstractLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (val == null)
writer.write(reader.array(), valOff, len);
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableObjectArrayLazyValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableObjectArrayLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableObjectArrayLazyValue.java
index 1126a3c..6634eea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableObjectArrayLazyValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableObjectArrayLazyValue.java
@@ -18,9 +18,9 @@
package org.apache.ignite.internal.portable.builder;
import org.apache.ignite.internal.portable.GridPortableMarshaller;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.portable.PortableInvalidClassException;
+import org.apache.ignite.binary.BinaryInvalidTypeException;
/**
*
@@ -53,7 +53,7 @@ class PortableObjectArrayLazyValue extends PortableAbstractLazyValue {
cls = U.forName(reader.readString(), null);
}
catch (ClassNotFoundException e) {
- throw new PortableInvalidClassException("Failed to load the class: " + clsName, e);
+ throw new BinaryInvalidTypeException("Failed to load the class: " + clsName, e);
}
compTypeId = reader.portableContext().descriptorForClass(cls).typeId();
@@ -82,7 +82,7 @@ class PortableObjectArrayLazyValue extends PortableAbstractLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (clsName == null)
ctx.writeArray(writer, GridPortableMarshaller.OBJ_ARR, lazyValsArr, compTypeId);
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainLazyValue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainLazyValue.java
index 136958a..14c182b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainLazyValue.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainLazyValue.java
@@ -43,7 +43,7 @@ class PortablePlainLazyValue extends PortableAbstractLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
writer.write(reader.array(), valOff, len);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainPortableObject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainPortableObject.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainPortableObject.java
index 8743fbe..1512b44 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainPortableObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortablePlainPortableObject.java
@@ -17,22 +17,22 @@
package org.apache.ignite.internal.portable.builder;
-import org.apache.ignite.internal.portable.PortableObjectImpl;
-import org.apache.ignite.internal.portable.PortableObjectOffheapImpl;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
-import org.apache.ignite.portable.PortableObject;
+import org.apache.ignite.internal.portable.BinaryObjectImpl;
+import org.apache.ignite.internal.portable.BinaryObjectOffheapImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
+import org.apache.ignite.binary.BinaryObject;
/**
*
*/
public class PortablePlainPortableObject implements PortableLazyValue {
/** */
- private final PortableObject portableObj;
+ private final BinaryObject portableObj;
/**
* @param portableObj Portable object.
*/
- public PortablePlainPortableObject(PortableObject portableObj) {
+ public PortablePlainPortableObject(BinaryObject portableObj) {
this.portableObj = portableObj;
}
@@ -42,12 +42,12 @@ public class PortablePlainPortableObject implements PortableLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
- PortableObject val = portableObj;
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
+ BinaryObject val = portableObj;
- if (val instanceof PortableObjectOffheapImpl)
- val = ((PortableObjectOffheapImpl)val).heapCopy();
+ if (val instanceof BinaryObjectOffheapImpl)
+ val = ((BinaryObjectOffheapImpl)val).heapCopy();
- writer.doWritePortableObject((PortableObjectImpl)val);
+ writer.doWritePortableObject((BinaryObjectImpl)val);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableValueWithType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableValueWithType.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableValueWithType.java
index 2e031f0..5ea8e62 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableValueWithType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableValueWithType.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.portable.builder;
-import org.apache.ignite.internal.portable.PortableWriterExImpl;
-import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl;
+import org.apache.ignite.internal.portable.BinaryWriterExImpl;
+import org.apache.ignite.internal.processors.cache.portable.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
@@ -41,7 +41,7 @@ class PortableValueWithType implements PortableLazyValue {
}
/** {@inheritDoc} */
- @Override public void writeTo(PortableWriterExImpl writer, PortableBuilderSerializer ctx) {
+ @Override public void writeTo(BinaryWriterExImpl writer, PortableBuilderSerializer ctx) {
if (val instanceof PortableBuilderSerializationAware)
((PortableBuilderSerializationAware)val).writeTo(writer, ctx);
else
@@ -50,7 +50,7 @@ class PortableValueWithType implements PortableLazyValue {
/** {@inheritDoc} */
public String typeName() {
- return CacheObjectPortableProcessorImpl.fieldTypeName(type);
+ return CacheObjectBinaryProcessorImpl.fieldTypeName(type);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
index d7f66c9..2c4864e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.portable.streams;
-import org.apache.ignite.portable.PortableException;
+import org.apache.ignite.binary.BinaryObjectException;
/**
* Portable abstract input stream.
@@ -288,7 +288,7 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
/** {@inheritDoc} */
@Override public void position(int pos) {
if (remaining() + this.pos < pos)
- throw new PortableException("Position is out of bounds: " + pos);
+ throw new BinaryObjectException("Position is out of bounds: " + pos);
else
this.pos = pos;
}
@@ -305,7 +305,7 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
*/
protected void ensureEnoughData(int cnt) {
if (remaining() < cnt)
- throw new PortableException("Not enough data to read the value [position=" + pos +
+ throw new BinaryObjectException("Not enough data to read the value [position=" + pos +
", requiredBytes=" + cnt + ", remainingBytes=" + remaining() + ']');
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
index 8bc40cd..d728927 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
@@ -33,6 +33,7 @@ import org.apache.ignite.cache.affinity.AffinityFunction;
import org.apache.ignite.cache.affinity.AffinityKeyMapper;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.events.DiscoveryEvent;
+import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.internal.GridNodeOrderComparator;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.CacheObject;
@@ -369,7 +370,7 @@ public class GridAffinityAssignmentCache {
* @return Affinity key.
*/
private Object affinityKey(Object key) {
- if (key instanceof CacheObject)
+ if (key instanceof CacheObject && !(key instanceof BinaryObject))
key = ((CacheObject)key).value(ctx.cacheObjectContext(), false);
return (key instanceof GridCacheInternal ? ctx.defaultAffMapper() : affMapper).affinityKey(key);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index 8f66dc1..90306b0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -38,6 +38,7 @@ import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.events.DiscoveryEvent;
import org.apache.ignite.events.Event;
+import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
@@ -497,7 +498,7 @@ public class GridAffinityProcessor extends GridProcessorAdapter {
* @throws IgniteCheckedException In case of error.
*/
private <K> ClusterNode primary(AffinityInfo aff, K key) throws IgniteCheckedException {
- if (key instanceof CacheObject)
+ if (key instanceof CacheObject && !(key instanceof BinaryObject))
key = ((CacheObject)key).value(aff.cacheObjCtx, false);
int part = aff.affFunc.partition(aff.mapper.affinityKey(key));
@@ -516,7 +517,7 @@ public class GridAffinityProcessor extends GridProcessorAdapter {
* @return Primary and backup nodes.
*/
private <K> List<ClusterNode> primaryAndBackups(AffinityInfo aff, K key) {
- if (key instanceof CacheObject)
+ if (key instanceof CacheObject && !(key instanceof BinaryObject))
key = ((CacheObject) key).value(aff.cacheObjCtx, false);
int part = aff.affFunc.partition(aff.mapper.affinityKey(key));
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
index f87dadd..2de26fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeEntry.java
@@ -49,9 +49,10 @@ public class CacheInvokeEntry<K, V> extends CacheLazyEntry<K, V> implements Muta
public CacheInvokeEntry(GridCacheContext cctx,
KeyCacheObject keyObj,
@Nullable CacheObject valObj,
- GridCacheVersion ver
+ GridCacheVersion ver,
+ boolean keepPortable
) {
- super(cctx, keyObj, valObj);
+ super(cctx, keyObj, valObj, keepPortable);
this.hadVal = valObj != null;
this.ver = ver;
@@ -70,8 +71,10 @@ public class CacheInvokeEntry<K, V> extends CacheLazyEntry<K, V> implements Muta
@Nullable K key,
@Nullable CacheObject valObj,
@Nullable V val,
- GridCacheVersion ver) {
- super(ctx, keyObj, key, valObj, val);
+ GridCacheVersion ver,
+ boolean keepPortable
+ ) {
+ super(ctx, keyObj, key, valObj, val, keepPortable);
this.hadVal = valObj != null || val != null;
this.ver = ver;
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
index 1301f1a..47ad30c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLazyEntry.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.cache;
import javax.cache.Cache;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
-import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
@@ -44,15 +43,19 @@ public class CacheLazyEntry<K, V> implements Cache.Entry<K, V> {
@GridToStringInclude
protected V val;
+ /** Keep portable flag. */
+ private boolean keepPortable;
+
/**
* @param cctx Cache context.
* @param keyObj Key cache object.
* @param valObj Cache object value.
*/
- public CacheLazyEntry(GridCacheContext cctx, KeyCacheObject keyObj, CacheObject valObj) {
+ public CacheLazyEntry(GridCacheContext cctx, KeyCacheObject keyObj, CacheObject valObj, boolean keepPortable) {
+ this.cctx = cctx;
this.keyObj = keyObj;
this.valObj = valObj;
- this.cctx = cctx;
+ this.keepPortable = keepPortable;
}
/**
@@ -60,10 +63,11 @@ public class CacheLazyEntry<K, V> implements Cache.Entry<K, V> {
* @param val Value.
* @param cctx Cache context.
*/
- public CacheLazyEntry(GridCacheContext cctx, KeyCacheObject keyObj, V val) {
+ public CacheLazyEntry(GridCacheContext cctx, KeyCacheObject keyObj, V val, boolean keepPortable) {
+ this.cctx = cctx;
this.keyObj = keyObj;
this.val = val;
- this.cctx = cctx;
+ this.keepPortable = keepPortable;
}
/**
@@ -77,18 +81,21 @@ public class CacheLazyEntry<K, V> implements Cache.Entry<K, V> {
KeyCacheObject keyObj,
K key,
CacheObject valObj,
- V val) {
+ V val,
+ boolean keepPortable
+ ) {
this.cctx = ctx;
this.keyObj = keyObj;
this.key = key;
this.valObj = valObj;
this.val = val;
+ this.keepPortable = keepPortable;
}
/** {@inheritDoc} */
@Override public K getKey() {
if (key == null)
- key = CU.value(keyObj, cctx, true);
+ key = (K)cctx.unwrapPortableIfNeeded(keyObj, keepPortable);
return key;
}
@@ -96,7 +103,7 @@ public class CacheLazyEntry<K, V> implements Cache.Entry<K, V> {
/** {@inheritDoc} */
@Override public V getValue() {
if (val == null)
- val = CU.value(valObj, cctx, true);
+ val = (V)cctx.unwrapPortableIfNeeded(valObj, keepPortable);
return val;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/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 d870a6c..81129bd 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
@@ -48,7 +48,16 @@ public interface CacheObject extends Message {
/**
* @return Object type.
*/
- public byte type();
+ public byte cacheObjectType();
+
+ /**
+ * Gets flag indicating whether object value is a platform type. Platform types will be automatically
+ * deserialized on public API cache operations regardless whether
+ * {@link org.apache.ignite.IgniteCache#withKeepBinary()} is used or not.
+ *
+ * @return Platform type flag.
+ */
+ public boolean isPlatformType();
/**
* Prepares cache object for cache (e.g. copies user-provided object if needed).
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/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 a3f37f6..df20646 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
@@ -49,7 +49,7 @@ public abstract class CacheObjectAdapter implements CacheObject, Externalizable
}
/** {@inheritDoc} */
- @Override public byte type() {
+ @Override public byte cacheObjectType() {
return TYPE_REGULAR;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/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 32f5f88..e961d84 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
@@ -75,11 +75,16 @@ public class CacheObjectByteArrayImpl implements CacheObject, Externalizable {
}
/** {@inheritDoc} */
- @Override public byte type() {
+ @Override public byte cacheObjectType() {
return TYPE_BYTE_ARR;
}
/** {@inheritDoc} */
+ @Override public boolean isPlatformType() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
@Override public CacheObject prepareForCache(CacheObjectContext ctx) {
return this;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/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 44b91a5..d49a029 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
@@ -17,15 +17,20 @@
package org.apache.ignite.internal.processors.cache;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
import org.apache.ignite.cache.affinity.AffinityKeyMapper;
import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.portable.PortableUtils;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
+import org.apache.ignite.internal.util.typedef.F;
/**
*
*/
-public class CacheObjectContext {
+@SuppressWarnings("TypeMayBeWeakened") public class CacheObjectContext {
/** */
private GridKernalContext kernalCtx;
@@ -60,12 +65,12 @@ public class CacheObjectContext {
boolean storeVal,
boolean addDepInfo) {
this.kernalCtx = kernalCtx;
- this.p2pEnabled = kernalCtx.config().isPeerClassLoadingEnabled();
this.dfltAffMapper = dfltAffMapper;
this.cpyOnGet = cpyOnGet;
this.storeVal = storeVal;
this.addDepInfo = addDepInfo;
+ p2pEnabled = kernalCtx.config().isPeerClassLoadingEnabled();
proc = kernalCtx.cacheObjects();
}
@@ -118,25 +123,124 @@ public class CacheObjectContext {
return proc;
}
+ /** {@inheritDoc} */
+ public Object unwrapPortableIfNeeded(Object o, boolean keepPortable) {
+ return unwrapPortableIfNeeded(o, keepPortable, true);
+ }
+
+ /** {@inheritDoc} */
+ public Object unwrapPortableIfNeeded(Object o, boolean keepPortable, boolean cpy) {
+ if (o == null)
+ return null;
+
+ return unwrapPortable(o, keepPortable, cpy);
+ }
+
+ /** {@inheritDoc} */
+ public Collection<Object> unwrapPortablesIfNeeded(Collection<Object> col, boolean keepPortable) {
+ return unwrapPortablesIfNeeded(col, keepPortable, true);
+ }
+
+ /** {@inheritDoc} */
+ public Collection<Object> unwrapPortablesIfNeeded(Collection<Object> col, boolean keepPortable, boolean cpy) {
+ if (col instanceof ArrayList)
+ return unwrapPortables((ArrayList<Object>)col, keepPortable, cpy);
+
+ if (col instanceof Set)
+ return unwrapPortables((Set<Object>)col, keepPortable, cpy);
+
+ Collection<Object> col0 = new ArrayList<>(col.size());
+
+ for (Object obj : col)
+ col0.add(unwrapPortable(obj, keepPortable, cpy));
+
+ return col0;
+ }
+
/**
- * Unwraps object.
+ * Unwraps map.
*
- * @param o Object to unwrap.
+ * @param map Map to unwrap.
* @param keepPortable Keep portable flag.
- * @return Unwrapped object.
+ * @return Unwrapped collection.
*/
- public Object unwrapPortableIfNeeded(Object o, boolean keepPortable) {
- return o;
+ private Map<Object, Object> unwrapPortablesIfNeeded(Map<Object, Object> map, boolean keepPortable, boolean cpy) {
+ if (keepPortable)
+ return map;
+
+ Map<Object, Object> map0 = PortableUtils.newMap(map);
+
+ for (Map.Entry<Object, Object> e : map.entrySet())
+ map0.put(unwrapPortable(e.getKey(), keepPortable, cpy), unwrapPortable(e.getValue(), keepPortable, cpy));
+
+ return map0;
}
/**
- * Unwraps collection.
+ * Unwraps array list.
*
- * @param col Collection to unwrap.
- * @param keepPortable Keep portable flag.
- * @return Unwrapped collection.
+ * @param col List to unwrap.
+ * @return Unwrapped list.
*/
- public Collection<Object> unwrapPortablesIfNeeded(Collection<Object> col, boolean keepPortable) {
+ private Collection<Object> unwrapPortables(ArrayList<Object> col, boolean keepPortable, boolean cpy) {
+ int size = col.size();
+
+ for (int i = 0; i < size; i++) {
+ Object o = col.get(i);
+
+ Object unwrapped = unwrapPortable(o, keepPortable, cpy);
+
+ if (o != unwrapped)
+ col.set(i, unwrapped);
+ }
+
return col;
}
+
+ /**
+ * Unwraps set with binary.
+ *
+ * @param set Set to unwrap.
+ * @return Unwrapped set.
+ */
+ private Set<Object> unwrapPortables(Set<Object> set, boolean keepPortable, boolean cpy) {
+ Set<Object> set0 = PortableUtils.newSet(set);
+
+ for (Object obj : set)
+ set0.add(unwrapPortable(obj, keepPortable, cpy));
+
+ return set0;
+ }
+
+ /**
+ * @param o Object to unwrap.
+ * @return Unwrapped object.
+ */
+ private Object unwrapPortable(Object o, boolean keepPortable, boolean cpy) {
+ if (o instanceof Map.Entry) {
+ Map.Entry entry = (Map.Entry)o;
+
+ Object key = entry.getKey();
+
+ Object uKey = unwrapPortable(key, keepPortable, cpy);
+
+ Object val = entry.getValue();
+
+ Object uVal = unwrapPortable(val, keepPortable, cpy);
+
+ return (key != uKey || val != uVal) ? F.t(uKey, uVal) : o;
+ }
+ else if (o instanceof Collection)
+ return unwrapPortablesIfNeeded((Collection<Object>)o, keepPortable, cpy);
+ else if (o instanceof Map)
+ return unwrapPortablesIfNeeded((Map<Object, Object>)o, keepPortable, cpy);
+ else if (o instanceof CacheObject) {
+ CacheObject co = (CacheObject)o;
+
+ if (!keepPortable || co.isPlatformType())
+ return unwrapPortable(co.value(this, true), keepPortable, cpy);
+ }
+
+ return o;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/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 83a80b3..694027f 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
@@ -47,6 +47,11 @@ public class CacheObjectImpl extends CacheObjectAdapter {
}
/** {@inheritDoc} */
+ @Override public boolean isPlatformType() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
cpy = cpy && needCopy(ctx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
index d551258..3993146 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
@@ -43,7 +43,7 @@ public class CacheOperationContext implements Serializable {
private final UUID subjId;
/** Keep portable flag. */
- private final boolean keepPortable;
+ private final boolean keepBinary;
/** Expiry policy. */
private final ExpiryPolicy expiryPlc;
@@ -56,7 +56,7 @@ public class CacheOperationContext implements Serializable {
subjId = null;
- keepPortable = false;
+ keepBinary = false;
expiryPlc = null;
@@ -66,20 +66,20 @@ public class CacheOperationContext implements Serializable {
/**
* @param skipStore Skip store flag.
* @param subjId Subject ID.
- * @param keepPortable Keep portable flag.
+ * @param keepBinary Keep portable flag.
* @param expiryPlc Expiry policy.
*/
public CacheOperationContext(
boolean skipStore,
@Nullable UUID subjId,
- boolean keepPortable,
+ boolean keepBinary,
@Nullable ExpiryPolicy expiryPlc,
boolean noRetries) {
this.skipStore = skipStore;
this.subjId = subjId;
- this.keepPortable = keepPortable;
+ this.keepBinary = keepBinary;
this.expiryPlc = expiryPlc;
@@ -89,8 +89,8 @@ public class CacheOperationContext implements Serializable {
/**
* @return Keep portable flag.
*/
- public boolean isKeepPortable() {
- return keepPortable;
+ public boolean isKeepBinary() {
+ return keepBinary;
}
/**
@@ -98,7 +98,7 @@ public class CacheOperationContext implements Serializable {
*
* @return New instance of CacheOperationContext with keep portable flag.
*/
- public CacheOperationContext keepPortable() {
+ public CacheOperationContext keepBinary() {
return new CacheOperationContext(
skipStore,
subjId,
@@ -126,7 +126,7 @@ public class CacheOperationContext implements Serializable {
return new CacheOperationContext(
skipStore,
subjId,
- keepPortable,
+ keepBinary,
expiryPlc,
noRetries);
}
@@ -148,7 +148,7 @@ public class CacheOperationContext implements Serializable {
return new CacheOperationContext(
skipStore,
subjId,
- keepPortable,
+ keepBinary,
expiryPlc,
noRetries);
}
@@ -183,7 +183,7 @@ public class CacheOperationContext implements Serializable {
return new CacheOperationContext(
skipStore,
subjId,
- keepPortable,
+ keepBinary,
expiryPlc,
noRetries
);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 74951b5..0d0d3ff 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -809,9 +809,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
else
cacheVal = localCachePeek0(cacheKey, modes.heap, modes.offheap, modes.swap, plc);
- Object val = CU.value(cacheVal, ctx, true);
-
- val = ctx.unwrapPortableIfNeeded(val, ctx.keepPortable());
+ Object val = ctx.unwrapPortableIfNeeded(cacheVal, ctx.keepPortable());
return (V)val;
}
@@ -945,13 +943,13 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
if (doomed != null && ctx.events().isRecordable(EVT_CACHE_ENTRY_DESTROYED))
// Event notification.
ctx.events().addEvent(doomed.partition(), doomed.key(), locNodeId, (IgniteUuid)null, null,
- EVT_CACHE_ENTRY_DESTROYED, null, false, null, false, null, null, null);
+ EVT_CACHE_ENTRY_DESTROYED, null, false, null, false, null, null, null, true);
if (created != null) {
// Event notification.
if (ctx.events().isRecordable(EVT_CACHE_ENTRY_CREATED))
ctx.events().addEvent(created.partition(), created.key(), locNodeId, (IgniteUuid)null, null,
- EVT_CACHE_ENTRY_CREATED, null, false, null, false, null, null, null);
+ EVT_CACHE_ENTRY_CREATED, null, false, null, false, null, null, null, true);
if (touch)
ctx.evicts().touch(cur, topVer);
@@ -1046,7 +1044,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
if (ctx.events().isRecordable(EVT_CACHE_ENTRY_DESTROYED))
// Event notification.
ctx.events().addEvent(entry.partition(), entry.key(), locNodeId, (IgniteUuid)null, null,
- EVT_CACHE_ENTRY_DESTROYED, null, false, null, false, null, null, null);
+ EVT_CACHE_ENTRY_DESTROYED, null, false, null, false, null, null, null, false);
}
else if (log.isDebugEnabled())
log.debug("Remove will not be done for key (obsolete entry got replaced or removed): " + key);
@@ -1622,7 +1620,8 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
subjId,
null,
taskName,
- expiry);
+ expiry,
+ !deserializePortable);
if (res == null) {
if (storeEnabled) {
@@ -1824,7 +1823,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
@Override public IgniteInternalFuture<Map<K1, V1>> op(IgniteTxLocalAdapter tx) {
return tx.getAllAsync(ctx, keys, deserializePortable, skipVals, false, !readThrough);
}
- });
+ }, ctx.operationContextPerCall());
}
}
@@ -3988,11 +3987,11 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
IgniteTxLocalAdapter tx = ctx.tm().threadLocalTx(ctx);
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
+
if (tx == null || tx.implicit()) {
boolean skipStore = ctx.skipStore(); // Save value of thread-local flag.
- CacheOperationContext opCtx = ctx.operationContextPerCall();
-
int retries = opCtx != null && opCtx.noRetries() ? 1 : MAX_RETRIES;
if (retries == 1) {
@@ -4006,10 +4005,10 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
!skipStore,
0);
- return asyncOp(tx, op);
+ return asyncOp(tx, op, opCtx);
}
else {
- AsyncOpRetryFuture<T> fut = new AsyncOpRetryFuture<>(op, skipStore, retries);
+ AsyncOpRetryFuture<T> fut = new AsyncOpRetryFuture<>(op, retries, opCtx);
fut.execute();
@@ -4017,7 +4016,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
}
}
else
- return asyncOp(tx, op);
+ return asyncOp(tx, op, opCtx);
}
/**
@@ -4027,7 +4026,11 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
* @return Future.
*/
@SuppressWarnings("unchecked")
- protected <T> IgniteInternalFuture<T> asyncOp(IgniteTxLocalAdapter tx, final AsyncOp<T> op) {
+ protected <T> IgniteInternalFuture<T> asyncOp(
+ IgniteTxLocalAdapter tx,
+ final AsyncOp<T> op,
+ final CacheOperationContext opCtx
+ ) {
IgniteInternalFuture<T> fail = asyncOpAcquire();
if (fail != null)
@@ -4050,24 +4053,31 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
return new GridFinishedFuture<>(
new IgniteCheckedException("Operation has been cancelled (node is stopping)."));
- return op.op(tx0).chain(new CX1<IgniteInternalFuture<T>, T>() {
- @Override public T applyx(IgniteInternalFuture<T> tFut) throws IgniteCheckedException {
- try {
- return tFut.get();
- }
- catch (IgniteTxRollbackCheckedException e) {
- throw e;
- }
- catch (IgniteCheckedException e1) {
- tx0.rollbackAsync();
+ ctx.operationContextPerCall(opCtx);
- throw e1;
- }
- finally {
- ctx.shared().txContextReset();
+ try {
+ return op.op(tx0).chain(new CX1<IgniteInternalFuture<T>, T>() {
+ @Override public T applyx(IgniteInternalFuture<T> tFut) throws IgniteCheckedException {
+ try {
+ return tFut.get();
+ }
+ catch (IgniteTxRollbackCheckedException e) {
+ throw e;
+ }
+ catch (IgniteCheckedException e1) {
+ tx0.rollbackAsync();
+
+ throw e1;
+ }
+ finally {
+ ctx.shared().txContextReset();
+ }
}
- }
- });
+ });
+ }
+ finally {
+ ctx.operationContextPerCall(null);
+ }
}
});
@@ -4605,7 +4615,8 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
null,
null,
null,
- null);
+ null,
+ !deserializePortable);
if (val == null)
return null;
@@ -4631,28 +4642,31 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
private AsyncOp<T> op;
/** */
- private boolean skipStore;
-
- /** */
private int retries;
/** */
private IgniteTxLocalAdapter tx;
+ /** */
+ private CacheOperationContext opCtx;
+
/**
* @param op Operation.
- * @param skipStore Skip store flag.
* @param retries Number of retries.
+ * @param opCtx Operation context per call to save.
*/
- public AsyncOpRetryFuture(AsyncOp<T> op,
- boolean skipStore,
- int retries) {
+ public AsyncOpRetryFuture(
+ AsyncOp<T> op,
+ int retries,
+ CacheOperationContext opCtx
+ ) {
assert retries > 1 : retries;
+ tx = null;
+
this.op = op;
- this.tx = null;
- this.skipStore = skipStore;
this.retries = retries;
+ this.opCtx = opCtx;
}
/**
@@ -4666,10 +4680,10 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
OPTIMISTIC,
READ_COMMITTED,
ctx.kernalContext().config().getTransactionConfiguration().getDefaultTxTimeout(),
- !skipStore,
+ opCtx == null || !opCtx.skipStore(),
0);
- IgniteInternalFuture<T> fut = asyncOp(tx, op);
+ IgniteInternalFuture<T> fut = asyncOp(tx, op, opCtx);
fut.listen(new IgniteInClosure<IgniteInternalFuture<T>>() {
@Override public void apply(IgniteInternalFuture<T> fut) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
index 1be7c07..fac704b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMap.java
@@ -1878,7 +1878,7 @@ public class GridCacheConcurrentMap {
* @return Key iterator.
*/
Iterator<K> keyIterator() {
- return new KeyIterator<>(map, filter);
+ return new KeyIterator<>(map, opCtxPerCall != null && opCtxPerCall.isKeepBinary(), filter);
}
/**
@@ -2156,6 +2156,9 @@ public class GridCacheConcurrentMap {
/** Hash table iterator. */
private Iterator0<K, V> it;
+ /** Keep binary flag. */
+ private boolean keepBinary;
+
/**
* Empty constructor required for {@link Externalizable}.
*/
@@ -2167,8 +2170,9 @@ public class GridCacheConcurrentMap {
* @param map Cache map.
* @param filter Filter.
*/
- private KeyIterator(GridCacheConcurrentMap map, CacheEntryPredicate[] filter) {
+ private KeyIterator(GridCacheConcurrentMap map, boolean keepBinary, CacheEntryPredicate[] filter) {
it = new Iterator0<>(map, false, filter, -1, -1);
+ this.keepBinary = keepBinary;
}
/** {@inheritDoc} */
@@ -2178,7 +2182,7 @@ public class GridCacheConcurrentMap {
/** {@inheritDoc} */
@Override public K next() {
- return it.next().key().value(it.ctx.cacheObjectContext(), true);
+ return (K)it.ctx.cacheObjectContext().unwrapPortableIfNeeded(it.next().key(), keepBinary, true);
}
/** {@inheritDoc} */