You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/12/11 11:00:45 UTC
[40/50] [abbrv] ignite git commit: ignite-2065: rename "portable"
packages to "binary"
http://git-wip-us.apache.org/repos/asf/ignite/blob/1dbf20e0/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java
deleted file mode 100644
index c8528d9..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectImpl.java
+++ /dev/null
@@ -1,584 +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;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.UUID;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.binary.BinaryObject;
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryType;
-import org.apache.ignite.internal.GridDirectTransient;
-import org.apache.ignite.internal.IgniteCodeGeneratingFail;
-import org.apache.ignite.internal.portable.streams.PortableHeapInputStream;
-import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectContext;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.internal.processors.cache.portable.CacheObjectBinaryProcessorImpl;
-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;
-import org.jetbrains.annotations.Nullable;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.BOOLEAN;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.BYTE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.CHAR;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DATE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DECIMAL;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.INT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.LONG;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.TIMESTAMP;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.UUID;
-
-/**
- * Portable object implementation.
- */
-@IgniteCodeGeneratingFail // Fields arr and start should not be generated by MessageCodeGenerator.
-public final class BinaryObjectImpl extends BinaryObjectExImpl implements Externalizable, KeyCacheObject {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** */
- @GridDirectTransient
- private PortableContext ctx;
-
- /** */
- private byte[] arr;
-
- /** */
- private int start;
-
- /** */
- @GridDirectTransient
- private Object obj;
-
- /** */
- @GridDirectTransient
- private boolean detachAllowed;
-
- /**
- * For {@link Externalizable}.
- */
- public BinaryObjectImpl() {
- // No-op.
- }
-
- /**
- * @param ctx Context.
- * @param arr Array.
- * @param start Start.
- */
- public BinaryObjectImpl(PortableContext ctx, byte[] arr, int start) {
- assert ctx != null;
- assert arr != null;
-
- this.ctx = ctx;
- this.arr = arr;
- this.start = start;
- }
-
- /** {@inheritDoc} */
- @Override public byte cacheObjectType() {
- return TYPE_BINARY;
- }
-
- /** {@inheritDoc} */
- @Override public boolean isPlatformType() {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override public boolean internal() {
- return false;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
- Object obj0 = obj;
-
- if (obj0 == null || (cpy && needCopy(ctx)))
- obj0 = deserializeValue(ctx);
-
- return (T)obj0;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
- if (detached())
- return array();
-
- int len = length();
-
- byte[] arr0 = new byte[len];
-
- U.arrayCopy(arr, start, arr0, 0, len);
-
- return arr0;
- }
-
- /** {@inheritDoc} */
- @Override public CacheObject prepareForCache(CacheObjectContext ctx) {
- if (detached())
- return this;
-
- return (BinaryObjectImpl)detach();
- }
-
- /** {@inheritDoc} */
- @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
- this.ctx = ((CacheObjectBinaryProcessorImpl)ctx.processor()).portableContext();
- }
-
- /** {@inheritDoc} */
- @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public int length() {
- return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.TOTAL_LEN_POS);
- }
-
- /**
- * @return Detached portable object.
- */
- public BinaryObject detach() {
- if (!detachAllowed || detached())
- return this;
-
- int len = length();
-
- byte[] arr0 = new byte[len];
-
- U.arrayCopy(arr, start, arr0, 0, len);
-
- return new BinaryObjectImpl(ctx, arr0, 0);
- }
-
- /**
- * @return Detached or not.
- */
- public boolean detached() {
- return start == 0 && length() == arr.length;
- }
-
- /**
- * @param detachAllowed Detach allowed flag.
- */
- public void detachAllowed(boolean detachAllowed) {
- this.detachAllowed = detachAllowed;
- }
-
- /**
- * @return Context.
- */
- public PortableContext context() {
- return ctx;
- }
-
- /**
- * @param ctx Context.
- */
- public void context(PortableContext ctx) {
- this.ctx = ctx;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] array() {
- return arr;
- }
-
- /** {@inheritDoc} */
- @Override public int start() {
- return start;
- }
-
- /** {@inheritDoc} */
- @Override public long offheapAddress() {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override protected boolean hasArray() {
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public int typeId() {
- return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.TYPE_ID_POS);
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public BinaryType type() throws BinaryObjectException {
- if (ctx == null)
- throw new BinaryObjectException("PortableContext is not set for the object.");
-
- return ctx.metadata(typeId());
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <F> F field(String fieldName) throws BinaryObjectException {
- return (F) reader(null).unmarshalField(fieldName);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <F> F field(int fieldId) throws BinaryObjectException {
- return (F) reader(null).unmarshalField(fieldId);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override protected <F> F fieldByOrder(int order) {
- Object val;
-
- // Calculate field position.
- int schemaOffset = PortablePrimitives.readInt(arr, start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS);
-
- short flags = PortablePrimitives.readShort(arr, start + GridPortableMarshaller.FLAGS_POS);
-
- int fieldIdLen = PortableUtils.isCompactFooter(flags) ? 0 : PortableUtils.FIELD_ID_LEN;
- int fieldOffsetLen = PortableUtils.fieldOffsetLength(flags);
-
- int fieldOffsetPos = start + schemaOffset + order * (fieldIdLen + fieldOffsetLen) + fieldIdLen;
-
- int fieldPos;
-
- if (fieldOffsetLen == PortableUtils.OFFSET_1)
- fieldPos = start + ((int)PortablePrimitives.readByte(arr, fieldOffsetPos) & 0xFF);
- else if (fieldOffsetLen == PortableUtils.OFFSET_2)
- fieldPos = start + ((int)PortablePrimitives.readShort(arr, fieldOffsetPos) & 0xFFFF);
- else
- fieldPos = start + PortablePrimitives.readInt(arr, fieldOffsetPos);
-
- // Read header and try performing fast lookup for well-known types (the most common types go first).
- byte hdr = PortablePrimitives.readByte(arr, fieldPos);
-
- switch (hdr) {
- case INT:
- val = PortablePrimitives.readInt(arr, fieldPos + 1);
-
- break;
-
- case LONG:
- val = PortablePrimitives.readLong(arr, fieldPos + 1);
-
- break;
-
- case BOOLEAN:
- val = PortablePrimitives.readBoolean(arr, fieldPos + 1);
-
- break;
-
- case SHORT:
- val = PortablePrimitives.readShort(arr, fieldPos + 1);
-
- break;
-
- case BYTE:
- val = PortablePrimitives.readByte(arr, fieldPos + 1);
-
- break;
-
- case CHAR:
- val = PortablePrimitives.readChar(arr, fieldPos + 1);
-
- break;
-
- case FLOAT:
- val = PortablePrimitives.readFloat(arr, fieldPos + 1);
-
- break;
-
- case DOUBLE:
- val = PortablePrimitives.readDouble(arr, fieldPos + 1);
-
- break;
-
- case STRING: {
- int dataLen = PortablePrimitives.readInt(arr, fieldPos + 1);
-
- val = new String(arr, fieldPos + 5, dataLen, UTF_8);
-
- break;
- }
-
- case DATE: {
- long time = PortablePrimitives.readLong(arr, fieldPos + 1);
-
- val = new Date(time);
-
- break;
- }
-
- case TIMESTAMP: {
- long time = PortablePrimitives.readLong(arr, fieldPos + 1);
- int nanos = PortablePrimitives.readInt(arr, fieldPos + 1 + 8);
-
- Timestamp ts = new Timestamp(time);
-
- ts.setNanos(ts.getNanos() + nanos);
-
- val = ts;
-
- break;
- }
-
- case UUID: {
- long most = PortablePrimitives.readLong(arr, fieldPos + 1);
- long least = PortablePrimitives.readLong(arr, fieldPos + 1 + 8);
-
- val = new UUID(most, least);
-
- break;
- }
-
- case DECIMAL: {
- int scale = PortablePrimitives.readInt(arr, fieldPos + 1);
-
- int dataLen = PortablePrimitives.readInt(arr, fieldPos + 5);
- byte[] data = PortablePrimitives.readByteArray(arr, fieldPos + 9, dataLen);
-
- BigInteger intVal = new BigInteger(data);
-
- if (scale < 0) {
- scale &= 0x7FFFFFFF;
-
- intVal = intVal.negate();
- }
-
- val = new BigDecimal(intVal, scale);
-
- break;
- }
-
- case NULL:
- val = null;
-
- break;
-
- default:
- val = PortableUtils.unmarshal(PortableHeapInputStream.create(arr, fieldPos), ctx, null);
-
- break;
- }
-
- return (F)val;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) {
- return (F)reader(rCtx).unmarshalField(fieldName);
- }
-
- /** {@inheritDoc} */
- @Override public boolean hasField(String fieldName) {
- return reader(null).findFieldByName(fieldName);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <T> T deserialize() throws BinaryObjectException {
- Object obj0 = obj;
-
- if (obj0 == null)
- obj0 = deserializeValue(null);
-
- return (T)obj0;
- }
-
- /** {@inheritDoc} */
- @Override public BinaryObject clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.HASH_CODE_POS);
- }
-
- /** {@inheritDoc} */
- @Override protected int schemaId() {
- return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.SCHEMA_ID_POS);
- }
-
- /** {@inheritDoc} */
- @Override protected PortableSchema createSchema() {
- return reader(null).getOrCreateSchema();
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(ctx);
-
- if (detachAllowed) {
- int len = length();
-
- out.writeInt(len);
- out.write(arr, start, len);
- out.writeInt(0);
- }
- else {
- out.writeInt(arr.length);
- out.write(arr);
- out.writeInt(start);
- }
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- ctx = (PortableContext)in.readObject();
-
- arr = new byte[in.readInt()];
-
- in.readFully(arr);
-
- start = in.readInt();
- }
-
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- writer.setBuffer(buf);
-
- if (!writer.isHeaderWritten()) {
- if (!writer.writeHeader(directType(), fieldsCount()))
- return false;
-
- writer.onHeaderWritten();
- }
-
- switch (writer.state()) {
- case 0:
- if (!writer.writeByteArray("arr",
- arr,
- detachAllowed ? start : 0,
- detachAllowed ? length() : arr.length))
- return false;
-
- writer.incrementState();
-
- case 1:
- if (!writer.writeInt("start", detachAllowed ? 0 : start))
- return false;
-
- writer.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- reader.setBuffer(buf);
-
- if (!reader.beforeMessageRead())
- return false;
-
- switch (reader.state()) {
- case 0:
- arr = reader.readByteArray("arr");
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- case 1:
- start = reader.readInt("start");
-
- if (!reader.isLastRead())
- return false;
-
- reader.incrementState();
-
- }
-
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public byte directType() {
- return 113;
- }
-
- /** {@inheritDoc} */
- @Override public byte fieldsCount() {
- return 3;
- }
-
- /**
- * Runs value deserialization regardless of whether obj already has the deserialized value.
- * Will set obj if descriptor is configured to keep deserialized values.
- * @param coCtx CacheObjectContext.
- * @return Object.
- */
- private Object deserializeValue(@Nullable CacheObjectContext coCtx) {
- // TODO: IGNITE-1272 - Deserialize with proper class loader.
- BinaryReaderExImpl reader = reader(null);
-
- Object obj0 = reader.deserialize();
-
- PortableClassDescriptor desc = reader.descriptor();
-
- assert desc != null;
-
- if (coCtx != null && coCtx.storeValue())
- obj = obj0;
-
- return obj0;
- }
-
- /**
- * @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);
- }
-
- /**
- * Create new reader for this object.
- *
- * @param rCtx Reader context.
- * @return Reader.
- */
- private BinaryReaderExImpl reader(@Nullable BinaryReaderHandles rCtx) {
- return new BinaryReaderExImpl(ctx,
- PortableHeapInputStream.create(arr, start),
- ctx.configuration().getClassLoader(),
- rCtx);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/1dbf20e0/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java
deleted file mode 100644
index 6de0432..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryObjectOffheapImpl.java
+++ /dev/null
@@ -1,429 +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;
-
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.binary.BinaryObject;
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryType;
-import org.apache.ignite.internal.portable.streams.PortableOffheapInputStream;
-import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.CacheObjectContext;
-import org.apache.ignite.internal.util.GridUnsafe;
-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;
-import org.jetbrains.annotations.Nullable;
-import sun.misc.Unsafe;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.UUID;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.BOOLEAN;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.BYTE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.CHAR;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DATE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DECIMAL;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.INT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.LONG;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.TIMESTAMP;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.UUID;
-
-/**
- * Portable object implementation over offheap memory
- */
-public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Externalizable, CacheObject {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** */
- private static final Unsafe UNSAFE = GridUnsafe.unsafe();
-
- /** */
- private final PortableContext ctx;
-
- /** */
- private final long ptr;
-
- /** */
- private final int start;
-
- /** */
- private final int size;
-
- /**
- * For {@link Externalizable} (not supported).
- */
- public BinaryObjectOffheapImpl() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * @param ctx Context.
- * @param ptr Memory address.
- * @param start Object start.
- * @param size Memory size.
- */
- public BinaryObjectOffheapImpl(PortableContext ctx, long ptr, int start, int size) {
- this.ctx = ctx;
- this.ptr = ptr;
- this.start = start;
- this.size = size;
- }
-
- /**
- * @return Heap-based copy.
- */
- public BinaryObject heapCopy() {
- return new BinaryObjectImpl(ctx, U.copyMemory(ptr, size), start);
- }
-
- /** {@inheritDoc} */
- @Override public int typeId() {
- return UNSAFE.getInt(ptr + start + GridPortableMarshaller.TYPE_ID_POS);
- }
-
- /** {@inheritDoc} */
- @Override public int length() {
- return UNSAFE.getInt(ptr + start + GridPortableMarshaller.TOTAL_LEN_POS);
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return UNSAFE.getInt(ptr + start + GridPortableMarshaller.HASH_CODE_POS);
- }
-
- /** {@inheritDoc} */
- @Override protected int schemaId() {
- return UNSAFE.getInt(ptr + start + GridPortableMarshaller.SCHEMA_ID_POS);
- }
-
- /** {@inheritDoc} */
- @Override protected PortableSchema createSchema() {
- return reader(null).getOrCreateSchema();
- }
-
- /** {@inheritDoc} */
- @Override public int start() {
- return start;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] array() {
- return null;
- }
-
- /** {@inheritDoc} */
- @Override public long offheapAddress() {
- return ptr;
- }
-
- /** {@inheritDoc} */
- @Override protected boolean hasArray() {
- return false;
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public BinaryType type() throws BinaryObjectException {
- if (ctx == null)
- throw new BinaryObjectException("PortableContext is not set for the object.");
-
- return ctx.metadata(typeId());
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <F> F field(String fieldName) throws BinaryObjectException {
- return (F) reader(null).unmarshalField(fieldName);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <F> F field(int fieldId) throws BinaryObjectException {
- return (F) reader(null).unmarshalField(fieldId);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override protected <F> F fieldByOrder(int order) {
- Object val;
-
- // Calculate field position.
- int schemaOffset = PortablePrimitives.readInt(ptr, start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS);
-
- short flags = PortablePrimitives.readShort(ptr, start + GridPortableMarshaller.FLAGS_POS);
-
- int fieldIdLen = PortableUtils.isCompactFooter(flags) ? 0 : PortableUtils.FIELD_ID_LEN;
- int fieldOffsetLen = PortableUtils.fieldOffsetLength(flags);
-
- int fieldOffsetPos = start + schemaOffset + order * (fieldIdLen + fieldOffsetLen) + fieldIdLen;
-
- int fieldPos;
-
- if (fieldOffsetLen == PortableUtils.OFFSET_1)
- fieldPos = start + ((int)PortablePrimitives.readByte(ptr, fieldOffsetPos) & 0xFF);
- else if (fieldOffsetLen == PortableUtils.OFFSET_2)
- fieldPos = start + ((int)PortablePrimitives.readShort(ptr, fieldOffsetPos) & 0xFFFF);
- else
- fieldPos = start + PortablePrimitives.readInt(ptr, fieldOffsetPos);
-
- // Read header and try performing fast lookup for well-known types (the most common types go first).
- byte hdr = PortablePrimitives.readByte(ptr, fieldPos);
-
- switch (hdr) {
- case INT:
- val = PortablePrimitives.readInt(ptr, fieldPos + 1);
-
- break;
-
- case LONG:
- val = PortablePrimitives.readLong(ptr, fieldPos + 1);
-
- break;
-
- case BOOLEAN:
- val = PortablePrimitives.readBoolean(ptr, fieldPos + 1);
-
- break;
-
- case SHORT:
- val = PortablePrimitives.readShort(ptr, fieldPos + 1);
-
- break;
-
- case BYTE:
- val = PortablePrimitives.readByte(ptr, fieldPos + 1);
-
- break;
-
- case CHAR:
- val = PortablePrimitives.readChar(ptr, fieldPos + 1);
-
- break;
-
- case FLOAT:
- val = PortablePrimitives.readFloat(ptr, fieldPos + 1);
-
- break;
-
- case DOUBLE:
- val = PortablePrimitives.readDouble(ptr, fieldPos + 1);
-
- break;
-
- case STRING: {
- int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 1);
- byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 5, dataLen);
-
- val = new String(data, UTF_8);
-
- break;
- }
-
- case DATE: {
- long time = PortablePrimitives.readLong(ptr, fieldPos + 1);
-
- val = new Date(time);
-
- break;
- }
-
- case TIMESTAMP: {
- long time = PortablePrimitives.readLong(ptr, fieldPos + 1);
- int nanos = PortablePrimitives.readInt(ptr, fieldPos + 1 + 8);
-
- Timestamp ts = new Timestamp(time);
-
- ts.setNanos(ts.getNanos() + nanos);
-
- val = ts;
-
- break;
- }
-
- case UUID: {
- long most = PortablePrimitives.readLong(ptr, fieldPos + 1);
- long least = PortablePrimitives.readLong(ptr, fieldPos + 1 + 8);
-
- val = new UUID(most, least);
-
- break;
- }
-
- case DECIMAL: {
- int scale = PortablePrimitives.readInt(ptr, fieldPos + 1);
-
- int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 5);
- byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 9, dataLen);
-
- BigInteger intVal = new BigInteger(data);
-
- if (scale < 0) {
- scale &= 0x7FFFFFFF;
-
- intVal = intVal.negate();
- }
-
- val = new BigDecimal(intVal, scale);
-
- break;
- }
-
- case NULL:
- val = null;
-
- break;
-
- default:
- PortableOffheapInputStream stream = new PortableOffheapInputStream(ptr, size, false);
-
- stream.position(fieldPos);
-
- val = PortableUtils.unmarshal(stream, ctx, null);
-
- break;
- }
-
- return (F)val;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override protected <F> F field(BinaryReaderHandles rCtx, String fieldName) {
- return (F)reader(rCtx).unmarshalField(fieldName);
- }
-
- /** {@inheritDoc} */
- @Override public boolean hasField(String fieldName) {
- return reader(null).findFieldByName(fieldName);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <T> T deserialize() throws BinaryObjectException {
- return (T)deserializeValue();
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("CloneDoesntCallSuperClone")
- @Override public BinaryObject clone() throws CloneNotSupportedException {
- return heapCopy();
- }
-
- /** {@inheritDoc} */
- @Override public byte cacheObjectType() {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public boolean isPlatformType() {
- return false;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) {
- return (T)deserializeValue();
- }
-
- /** {@inheritDoc} */
- @Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public CacheObject prepareForCache(CacheObjectContext ctx) {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public byte directType() {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public byte fieldsCount() {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- throw new UnsupportedOperationException(); // To make sure it is not marshalled.
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- throw new UnsupportedOperationException(); // To make sure it is not marshalled.
- }
-
- /**
- * @return Deserialized value.
- */
- private Object deserializeValue() {
- // TODO: IGNITE-1272 - Deserialize with proper class loader.
- return reader(null).deserialize();
- }
-
- /**
- * Create new reader for this object.
- *
- * @param rCtx Reader context.
- * @return Reader.
- */
- private BinaryReaderExImpl reader(@Nullable BinaryReaderHandles rCtx) {
- PortableOffheapInputStream stream = new PortableOffheapInputStream(ptr, size, false);
-
- stream.position(start);
-
- return new BinaryReaderExImpl(ctx, stream, null, rCtx);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/1dbf20e0/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawReaderEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawReaderEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawReaderEx.java
deleted file mode 100644
index 3d7c61a..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawReaderEx.java
+++ /dev/null
@@ -1,33 +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;
-
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryRawReader;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Extended reader interface.
- */
-public interface BinaryRawReaderEx extends BinaryRawReader {
- /**
- * @return Object.
- * @throws org.apache.ignite.binary.BinaryObjectException In case of error.
- */
- @Nullable public Object readObjectDetached() throws BinaryObjectException;
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/1dbf20e0/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawWriterEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawWriterEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawWriterEx.java
deleted file mode 100644
index 96312b4..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryRawWriterEx.java
+++ /dev/null
@@ -1,60 +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;
-
-import org.apache.ignite.internal.portable.streams.PortableOutputStream;
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryRawWriter;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Extended writer interface.
- */
-public interface BinaryRawWriterEx extends BinaryRawWriter, AutoCloseable {
- /**
- * @param obj Object to write.
- * @throws org.apache.ignite.binary.BinaryObjectException In case of error.
- */
- public void writeObjectDetached(@Nullable Object obj) throws BinaryObjectException;
-
- /**
- * @return Output stream.
- */
- public PortableOutputStream out();
-
- /**
- * Cleans resources.
- */
- @Override public void close();
-
- /**
- * Reserve a room for an integer.
- *
- * @return Position in the stream where value is to be written.
- */
- public int reserveInt();
-
- /**
- * Write int value at the specific position.
- *
- * @param pos Position.
- * @param val Value.
- * @throws org.apache.ignite.binary.BinaryObjectException If failed.
- */
- public void writeInt(int pos, int val) throws BinaryObjectException;
-}
\ No newline at end of file