http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectArrayLazyValue.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectArrayLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectArrayLazyValue.java deleted file mode 100644 index 5557e4b..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectArrayLazyValue.java +++ /dev/null @@ -1,89 +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.util.typedef.internal.*; -import org.apache.ignite.portable.*; - -/** - * - */ -class GridPortableObjectArrayLazyValue extends GridPortableAbstractLazyValue { - /** */ - private Object[] lazyValsArr; - - /** */ - private int compTypeId; - - /** */ - private String clsName; - - /** - * @param reader Reader. - */ - protected GridPortableObjectArrayLazyValue(GridPortableBuilderReader reader) { - super(reader, reader.position() - 1); - - int typeId = reader.readInt(); - - if (typeId == GridPortableMarshaller.UNREGISTERED_TYPE_ID) { - clsName = reader.readString(); - - Class cls; - - try { - // TODO: GG-10396 - Is class loader needed here? - cls = U.forName(reader.readString(), null); - } - catch (ClassNotFoundException e) { - throw new PortableInvalidClassException("Failed to load the class: " + clsName, e); - } - - compTypeId = reader.portableContext().descriptorForClass(cls).typeId(); - } - else { - compTypeId = typeId; - clsName = null; - } - - int size = reader.readInt(); - - lazyValsArr = new Object[size]; - - for (int i = 0; i < size; i++) - lazyValsArr[i] = reader.parseValue(); - } - - /** {@inheritDoc} */ - @Override protected Object init() { - for (int i = 0; i < lazyValsArr.length; i++) { - if (lazyValsArr[i] instanceof GridPortableLazyValue) - lazyValsArr[i] = ((GridPortableLazyValue)lazyValsArr[i]).value(); - } - - return lazyValsArr; - } - - /** {@inheritDoc} */ - @Override public void writeTo(GridPortableWriterExImpl writer, GridPortableBuilderSerializer ctx) { - if (clsName == null) - ctx.writeArray(writer, GridPortableMarshaller.OBJ_ARR, lazyValsArr, compTypeId); - else - ctx.writeArray(writer, GridPortableMarshaller.OBJ_ARR, lazyValsArr, clsName); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectEx.java deleted file mode 100644 index 379b1b9..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectEx.java +++ /dev/null @@ -1,213 +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.*; -import org.apache.ignite.internal.util.offheap.unsafe.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.portable.*; - -import org.jetbrains.annotations.*; - -import java.math.*; -import java.util.*; - -/** - * Internal portable object interface. - */ -public abstract class GridPortableObjectEx implements PortableObject { - /** - * @return Length. - */ - public abstract int length(); - - /** - * @return Object start. - */ - public abstract int start(); - - /** - * @return {@code True} if object is array based. - */ - protected abstract boolean hasArray(); - - /** - * @return Object array if object is array based, otherwise {@code null}. - */ - public abstract byte[] array(); - - /** - * @return Object offheap address is object is offheap based, otherwise 0. - */ - public abstract long offheapAddress(); - - /** - * @param ctx Reader context. - * @param fieldName Field name. - * @return Field name. - */ - @Nullable protected abstract <F> F field(GridPortableReaderContext ctx, String fieldName); - - /** {@inheritDoc} */ - @Override public PortableObject clone() throws CloneNotSupportedException { - return (PortableObject)super.clone(); - } - - /** {@inheritDoc} */ - public boolean equals(Object other) { - if (other == this) - return true; - - if (other == null) - return false; - - if (!(other instanceof GridPortableObjectEx)) - return false; - - GridPortableObjectEx otherPo = (GridPortableObjectEx)other; - - if (length() != otherPo.length() || typeId() != otherPo.typeId()) - return false; - - if (hasArray()) { - if (otherPo.hasArray()) { - int len = length(); - int end = start() + len; - - byte[] arr = array(); - byte[] otherArr = otherPo.array(); - - for (int i = start(), j = otherPo.start(); i < end; i++, j++) { - if (arr[i] != otherArr[j]) - return false; - } - - return true; - } - else { - assert otherPo.offheapAddress() > 0; - - return GridUnsafeMemory.compare(otherPo.offheapAddress() + otherPo.start(), array()); - } - } - else { - assert offheapAddress() > 0; - - if (otherPo.hasArray()) - return GridUnsafeMemory.compare(offheapAddress() + start(), otherPo.array()); - else { - assert otherPo.offheapAddress() > 0; - - return GridUnsafeMemory.compare(offheapAddress() + start(), - otherPo.offheapAddress() + otherPo.start(), - length()); - } - } - } - - /** - * @param ctx Reader context. - * @param handles Handles for already traversed objects. - * @return String representation. - */ - private String toString(GridPortableReaderContext ctx, IdentityHashMap<PortableObject, Integer> handles) { - int idHash = System.identityHashCode(this); - - PortableMetadata meta; - - try { - meta = metaData(); - } - catch (PortableException ignore) { - meta = null; - } - - if (meta == null) - return "PortableObject [hash=" + idHash + ", typeId=" + typeId() + ']'; - - handles.put(this, idHash); - - SB buf = new SB(meta.typeName()); - - if (meta.fields() != null) { - buf.a(" [hash=").a(idHash); - - for (String name : meta.fields()) { - Object val = field(ctx, name); - - buf.a(", ").a(name).a('='); - - if (val instanceof byte[]) - buf.a(Arrays.toString((byte[]) val)); - else if (val instanceof short[]) - buf.a(Arrays.toString((short[])val)); - else if (val instanceof int[]) - buf.a(Arrays.toString((int[])val)); - else if (val instanceof long[]) - buf.a(Arrays.toString((long[])val)); - else if (val instanceof float[]) - buf.a(Arrays.toString((float[])val)); - else if (val instanceof double[]) - buf.a(Arrays.toString((double[])val)); - else if (val instanceof char[]) - buf.a(Arrays.toString((char[])val)); - else if (val instanceof boolean[]) - buf.a(Arrays.toString((boolean[]) val)); - else if (val instanceof BigDecimal[]) - buf.a(Arrays.toString((BigDecimal[])val)); - else { - if (val instanceof GridPortableObjectEx) { - GridPortableObjectEx po = (GridPortableObjectEx)val; - - Integer idHash0 = handles.get(val); - - if (idHash0 != null) { // Circular reference. - PortableMetadata meta0 = po.metaData(); - - assert meta0 != null; - - buf.a(meta0.typeName()).a(" [hash=").a(idHash0).a(", ...]"); - } - else - buf.a(po.toString(ctx, handles)); - } - else - buf.a(val); - } - } - - buf.a(']'); - } - - return buf.toString(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - try { - GridPortableReaderContext ctx = new GridPortableReaderContext(); - - ctx.setPortableHandler(start(), this); - - return toString(ctx, new IdentityHashMap<PortableObject, Integer>()); - } - catch (PortableException e) { - throw new IgniteException("Failed to create string representation of portable object.", e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectImpl.java deleted file mode 100644 index 773c69d..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectImpl.java +++ /dev/null @@ -1,383 +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.*; -import org.apache.ignite.internal.*; -import org.apache.ignite.internal.portable.streams.*; -import org.apache.ignite.internal.processors.cache.*; -import org.apache.ignite.internal.processors.cache.portable.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.plugin.extensions.communication.*; -import org.apache.ignite.portable.*; - -import org.jetbrains.annotations.*; - -import java.io.*; -import java.nio.*; - -/** - * Portable object implementation. - */ -@IgniteCodeGeneratingFail // Fields arr and start should not be generated by MessageCodeGenerator. -public final class GridPortableObjectImpl extends GridPortableObjectEx implements Externalizable, - Message, CacheObject, KeyCacheObject { - /** */ - public static final byte TYPE_PORTABLE = 100; - - /** */ - private static final long serialVersionUID = 0L; - - /** */ - private static final GridPortablePrimitives PRIM = GridPortablePrimitives.get(); - - /** */ - @GridDirectTransient - private GridPortableContext ctx; - - /** */ - private byte[] arr; - - /** */ - private int start; - - /** */ - @GridDirectTransient - private Object obj; - - /** */ - @GridDirectTransient - private boolean detachAllowed; - - /** - * For {@link Externalizable}. - */ - public GridPortableObjectImpl() { - // No-op. - } - - /** - * @param ctx Context. - * @param arr Array. - * @param start Start. - */ - public GridPortableObjectImpl(GridPortableContext ctx, byte[] arr, int start) { - assert ctx != null; - assert arr != null; - - this.ctx = ctx; - this.arr = arr; - this.start = start; - } - - /** {@inheritDoc} */ - @Override public byte type() { - return TYPE_PORTABLE; - } - - /** {@inheritDoc} */ - @Override public boolean internal() { - return false; - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) { - return (T)this; - } - - /** {@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 (GridPortableObjectImpl)detach(); - } - - /** {@inheritDoc} */ - @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException { - this.ctx = ((CacheObjectPortableProcessorImpl)ctx.processor()).portableContext(); - } - - /** {@inheritDoc} */ - @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Override public int length() { - return PRIM.readInt(arr, start + GridPortableMarshaller.TOTAL_LEN_POS); - } - - /** - * @return Detached portable object. - */ - public PortableObject detach() { - if (!detachAllowed || detached()) - return this; - - int len = length(); - - byte[] arr0 = new byte[len]; - - U.arrayCopy(arr, start, arr0, 0, len); - - return new GridPortableObjectImpl(ctx, arr0, 0); - } - - /** - * @return Detached or not. - */ - public boolean detached() { - return start == 0 && length() == arr.length; - } - - /** - * @return {@code True} if detach is allowed. - */ - public boolean detachAllowed() { - return true; - } - - /** - * @param detachAllowed Detach allowed flag. - */ - public void detachAllowed(boolean detachAllowed) { - this.detachAllowed = detachAllowed; - } - - /** - * @return Context. - */ - public GridPortableContext context() { - return ctx; - } - - /** - * @param ctx Context. - */ - public void context(GridPortableContext 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 PRIM.readInt(arr, start + 2); - } - - /** {@inheritDoc} */ - @Nullable @Override public PortableMetadata metaData() throws PortableException { - if (ctx == null) - throw new PortableException("GridPortableContext is not set for the object."); - - return ctx.metaData(typeId()); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(String fieldName) throws PortableException { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, arr, start, null); - - return (F)reader.unmarshal(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F field(GridPortableReaderContext rCtx, String fieldName) { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, - new GridPortableHeapInputStream(arr), - start, - null, - rCtx); - - return (F)reader.unmarshal(fieldName); - } - - /** {@inheritDoc} */ - @Override public boolean hasField(String fieldName) { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, arr, start, null); - - return reader.hasField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T deserialize() throws PortableException { - Object obj0 = obj; - - if (obj0 == null) { - // TODO: GG-10396 - Deserialize with proper class loader. - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, arr, start, null); - - obj0 = reader.deserialize(); - - GridPortableClassDescriptor desc = reader.descriptor(); - - assert desc != null; - - if (desc.keepDeserialized()) - obj = obj0; - } - - return (T)obj0; - } - - /** {@inheritDoc} */ - @Override public PortableObject clone() throws CloneNotSupportedException { - return super.clone(); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return PRIM.readInt(arr, start + 6); - } - - /** {@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 = (GridPortableContext)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; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectOffheapImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectOffheapImpl.java deleted file mode 100644 index ba526d9..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableObjectOffheapImpl.java +++ /dev/null @@ -1,238 +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.*; -import org.apache.ignite.internal.portable.streams.*; -import org.apache.ignite.internal.processors.cache.*; -import org.apache.ignite.internal.util.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.plugin.extensions.communication.*; -import org.apache.ignite.portable.*; - -import org.jetbrains.annotations.*; -import sun.misc.*; - -import java.io.*; -import java.nio.*; - -/** - * Portable object implementation over offheap memory - */ -public class GridPortableObjectOffheapImpl extends GridPortableObjectEx implements Externalizable, CacheObject { - /** */ - private static final long serialVersionUID = 0L; - - /** */ - private static final Unsafe UNSAFE = GridUnsafe.unsafe(); - - /** */ - private final GridPortableContext ctx; - - /** */ - private final long ptr; - - /** */ - private final int start; - - /** */ - private final int size; - - /** - * For {@link Externalizable} (not supported). - */ - public GridPortableObjectOffheapImpl() { - throw new UnsupportedOperationException(); - } - - /** - * @param ctx Context. - * @param ptr Memory address. - * @param start Object start. - * @param size Memory size. - */ - public GridPortableObjectOffheapImpl(GridPortableContext ctx, long ptr, int start, int size) { - this.ctx = ctx; - this.ptr = ptr; - this.start = start; - this.size = size; - } - - /** - * @return Heap-based copy. - */ - public PortableObject heapCopy() { - return new GridPortableObjectImpl(ctx, U.copyMemory(ptr, size), start); - } - - /** {@inheritDoc} */ - @Override public int typeId() { - return UNSAFE.getInt(ptr + start + 2); - } - - /** {@inheritDoc} */ - @Override public int length() { - return UNSAFE.getInt(ptr + start + GridPortableMarshaller.TOTAL_LEN_POS); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return UNSAFE.getInt(ptr + start + 6); - } - - /** {@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 PortableMetadata metaData() throws PortableException { - if (ctx == null) - throw new PortableException("GridPortableContext is not set for the object."); - - return ctx.metaData(typeId()); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(String fieldName) throws PortableException { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, - new GridPortableOffheapInputStream(ptr, size, false), - start, - null); - - return (F)reader.unmarshal(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F field(GridPortableReaderContext rCtx, String fieldName) { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, - new GridPortableOffheapInputStream(ptr, size, false), - start, - null, - rCtx); - - return (F)reader.unmarshal(fieldName); - } - - /** {@inheritDoc} */ - @Override public boolean hasField(String fieldName) { - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl(ctx, - new GridPortableOffheapInputStream(ptr, size, false), - start, - null); - - return reader.hasField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T deserialize() throws PortableException { - // TODO: GG-10396 - Deserialize with proper class loader. - GridGridPortableReaderExImpl reader = new GridGridPortableReaderExImpl( - ctx, - new GridPortableOffheapInputStream(ptr, size, false), - start, - null); - - return (T)reader.deserialize(); - } - - /** {@inheritDoc} */ - @SuppressWarnings("CloneDoesntCallSuperClone") - @Override public PortableObject clone() throws CloneNotSupportedException { - return heapCopy(); - } - - /** {@inheritDoc} */ - @Override public byte type() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) { - return (T)this; - } - - /** {@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. - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainLazyValue.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainLazyValue.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainLazyValue.java deleted file mode 100644 index c3ebcd4..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainLazyValue.java +++ /dev/null @@ -1,47 +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; - -/** - * - */ -class GridPortablePlainLazyValue extends GridPortableAbstractLazyValue { - /** */ - protected final int len; - - /** - * @param reader Reader - * @param valOff Offset - * @param len Length. - */ - protected GridPortablePlainLazyValue(GridPortableBuilderReader reader, int valOff, int len) { - super(reader, valOff); - - this.len = len; - } - - /** {@inheritDoc} */ - @Override protected Object init() { - return reader.reader().unmarshal(valOff); - } - - /** {@inheritDoc} */ - @Override public void writeTo(GridPortableWriterExImpl writer, GridPortableBuilderSerializer ctx) { - writer.write(reader.array(), valOff, len); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainPortableObject.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainPortableObject.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainPortableObject.java deleted file mode 100644 index 1e8e6f3..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePlainPortableObject.java +++ /dev/null @@ -1,50 +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.portable.*; - -/** - * - */ -public class GridPortablePlainPortableObject implements GridPortableLazyValue { - /** */ - private final PortableObject portableObj; - - /** - * @param portableObj Portable object. - */ - public GridPortablePlainPortableObject(PortableObject portableObj) { - this.portableObj = portableObj; - } - - /** {@inheritDoc} */ - @Override public Object value() { - return portableObj; - } - - /** {@inheritDoc} */ - @Override public void writeTo(GridPortableWriterExImpl writer, GridPortableBuilderSerializer ctx) { - PortableObject val = portableObj; - - if (val instanceof GridPortableObjectOffheapImpl) - val = ((GridPortableObjectOffheapImpl)val).heapCopy(); - - writer.doWritePortableObject((GridPortableObjectImpl)val); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePrimitives.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePrimitives.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePrimitives.java deleted file mode 100644 index eca91c0..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortablePrimitives.java +++ /dev/null @@ -1,773 +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.util.*; - -import sun.misc.*; - -import static java.nio.ByteOrder.*; - -/** - * Primitives writer. - */ -abstract class GridPortablePrimitives { - /** */ - private static final GridPortablePrimitives INSTANCE = - nativeOrder() == LITTLE_ENDIAN ? new UnsafePrimitives() : new BytePrimitives(); - - /** - * @return Primitives writer. - */ - static GridPortablePrimitives get() { - return INSTANCE; - } - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeByte(byte[] arr, int off, byte val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract byte readByte(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeShort(byte[] arr, int off, short val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract short readShort(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeInt(byte[] arr, int off, int val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract int readInt(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeLong(byte[] arr, int off, long val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract long readLong(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeFloat(byte[] arr, int off, float val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract float readFloat(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeDouble(byte[] arr, int off, double val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract double readDouble(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeChar(byte[] arr, int off, char val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract char readChar(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeBoolean(byte[] arr, int off, boolean val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract boolean readBoolean(byte[] arr, int off); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeByteArray(byte[] arr, int off, byte[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract byte[] readByteArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeShortArray(byte[] arr, int off, short[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract short[] readShortArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeIntArray(byte[] arr, int off, int[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract int[] readIntArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeLongArray(byte[] arr, int off, long[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract long[] readLongArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeFloatArray(byte[] arr, int off, float[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract float[] readFloatArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeDoubleArray(byte[] arr, int off, double[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract double[] readDoubleArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeCharArray(byte[] arr, int off, char[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract char[] readCharArray(byte[] arr, int off, int len); - - /** - * @param arr Array. - * @param off Offset. - * @param val Value. - */ - abstract void writeBooleanArray(byte[] arr, int off, boolean[] val); - - /** - * @param arr Array. - * @param off Offset. - * @return Value. - */ - abstract boolean[] readBooleanArray(byte[] arr, int off, int len); - - /** */ - private static class UnsafePrimitives extends GridPortablePrimitives { - /** */ - private static final Unsafe UNSAFE = GridUnsafe.unsafe(); - - /** */ - private static final long BYTE_ARR_OFF = UNSAFE.arrayBaseOffset(byte[].class); - - /** */ - private static final long SHORT_ARR_OFF = UNSAFE.arrayBaseOffset(short[].class); - - /** */ - private static final long INT_ARR_OFF = UNSAFE.arrayBaseOffset(int[].class); - - /** */ - private static final long LONG_ARR_OFF = UNSAFE.arrayBaseOffset(long[].class); - - /** */ - private static final long FLOAT_ARR_OFF = UNSAFE.arrayBaseOffset(float[].class); - - /** */ - private static final long DOUBLE_ARR_OFF = UNSAFE.arrayBaseOffset(double[].class); - - /** */ - private static final long CHAR_ARR_OFF = UNSAFE.arrayBaseOffset(char[].class); - - /** */ - private static final long BOOLEAN_ARR_OFF = UNSAFE.arrayBaseOffset(boolean[].class); - - /** {@inheritDoc} */ - @Override void writeByte(byte[] arr, int off, byte val) { - UNSAFE.putByte(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override byte readByte(byte[] arr, int off) { - return UNSAFE.getByte(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeShort(byte[] arr, int off, short val) { - UNSAFE.putShort(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override short readShort(byte[] arr, int off) { - return UNSAFE.getShort(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeInt(byte[] arr, int off, int val) { - UNSAFE.putInt(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override int readInt(byte[] arr, int off) { - return UNSAFE.getInt(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeLong(byte[] arr, int off, long val) { - UNSAFE.putLong(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override long readLong(byte[] arr, int off) { - return UNSAFE.getLong(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeFloat(byte[] arr, int off, float val) { - UNSAFE.putFloat(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override float readFloat(byte[] arr, int off) { - return UNSAFE.getFloat(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeDouble(byte[] arr, int off, double val) { - UNSAFE.putDouble(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override double readDouble(byte[] arr, int off) { - return UNSAFE.getDouble(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeChar(byte[] arr, int off, char val) { - UNSAFE.putChar(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override char readChar(byte[] arr, int off) { - return UNSAFE.getChar(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeBoolean(byte[] arr, int off, boolean val) { - UNSAFE.putBoolean(arr, BYTE_ARR_OFF + off, val); - } - - /** {@inheritDoc} */ - @Override boolean readBoolean(byte[] arr, int off) { - return UNSAFE.getBoolean(arr, BYTE_ARR_OFF + off); - } - - /** {@inheritDoc} */ - @Override void writeByteArray(byte[] arr, int off, byte[] val) { - UNSAFE.copyMemory(val, BYTE_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length); - } - - /** {@inheritDoc} */ - @Override byte[] readByteArray(byte[] arr, int off, int len) { - byte[] arr0 = new byte[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, BYTE_ARR_OFF, len); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeShortArray(byte[] arr, int off, short[] val) { - UNSAFE.copyMemory(val, SHORT_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 1); - } - - /** {@inheritDoc} */ - @Override short[] readShortArray(byte[] arr, int off, int len) { - short[] arr0 = new short[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, SHORT_ARR_OFF, len << 1); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeIntArray(byte[] arr, int off, int[] val) { - UNSAFE.copyMemory(val, INT_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 2); - } - - /** {@inheritDoc} */ - @Override int[] readIntArray(byte[] arr, int off, int len) { - int[] arr0 = new int[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, INT_ARR_OFF, len << 2); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeLongArray(byte[] arr, int off, long[] val) { - UNSAFE.copyMemory(val, LONG_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 3); - } - - /** {@inheritDoc} */ - @Override long[] readLongArray(byte[] arr, int off, int len) { - long[] arr0 = new long[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, LONG_ARR_OFF, len << 3); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeFloatArray(byte[] arr, int off, float[] val) { - UNSAFE.copyMemory(val, FLOAT_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 2); - } - - /** {@inheritDoc} */ - @Override float[] readFloatArray(byte[] arr, int off, int len) { - float[] arr0 = new float[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, FLOAT_ARR_OFF, len << 2); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeDoubleArray(byte[] arr, int off, double[] val) { - UNSAFE.copyMemory(val, DOUBLE_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 3); - } - - /** {@inheritDoc} */ - @Override double[] readDoubleArray(byte[] arr, int off, int len) { - double[] arr0 = new double[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, DOUBLE_ARR_OFF, len << 3); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeCharArray(byte[] arr, int off, char[] val) { - UNSAFE.copyMemory(val, CHAR_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length << 1); - } - - /** {@inheritDoc} */ - @Override char[] readCharArray(byte[] arr, int off, int len) { - char[] arr0 = new char[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, CHAR_ARR_OFF, len << 1); - - return arr0; - } - - /** {@inheritDoc} */ - @Override void writeBooleanArray(byte[] arr, int off, boolean[] val) { - UNSAFE.copyMemory(val, BOOLEAN_ARR_OFF, arr, BYTE_ARR_OFF + off, val.length); - } - - /** {@inheritDoc} */ - @Override boolean[] readBooleanArray(byte[] arr, int off, int len) { - boolean[] arr0 = new boolean[len]; - - UNSAFE.copyMemory(arr, BYTE_ARR_OFF + off, arr0, BOOLEAN_ARR_OFF, len); - - return arr0; - } - } - - /** */ - private static class BytePrimitives extends GridPortablePrimitives { - /** {@inheritDoc} */ - @Override void writeByte(byte[] arr, int off, byte val) { - arr[off] = val; - } - - /** {@inheritDoc} */ - @Override byte readByte(byte[] arr, int off) { - return arr[off]; - } - - /** {@inheritDoc} */ - @Override void writeShort(byte[] arr, int off, short val) { - arr[off++] = (byte)(val & 0xff); - arr[off] = (byte)((val >>> 8) & 0xff); - } - - /** {@inheritDoc} */ - @Override short readShort(byte[] arr, int off) { - short val = 0; - - val |= (arr[off++] & 0xff); - val |= (arr[off] & 0xff) << 8; - - return val; - } - - /** {@inheritDoc} */ - @Override void writeInt(byte[] arr, int off, int val) { - arr[off++] = (byte)(val & 0xff); - arr[off++] = (byte)((val >>> 8) & 0xff); - arr[off++] = (byte)((val >>> 16) & 0xff); - arr[off] = (byte)((val >>> 24) & 0xff); - } - - /** {@inheritDoc} */ - @Override int readInt(byte[] arr, int off) { - int val = 0; - - val |= (arr[off++] & 0xff); - val |= (arr[off++] & 0xff) << 8; - val |= (arr[off++] & 0xff) << 16; - val |= (arr[off] & 0xff) << 24; - - return val; - } - - /** {@inheritDoc} */ - @Override void writeLong(byte[] arr, int off, long val) { - arr[off++] = (byte)(val & 0xffL); - arr[off++] = (byte)((val >>> 8) & 0xffL); - arr[off++] = (byte)((val >>> 16) & 0xffL); - arr[off++] = (byte)((val >>> 24) & 0xffL); - arr[off++] = (byte)((val >>> 32) & 0xffL); - arr[off++] = (byte)((val >>> 40) & 0xffL); - arr[off++] = (byte)((val >>> 48) & 0xffL); - arr[off] = (byte)((val >>> 56) & 0xffL); - } - - /** {@inheritDoc} */ - @Override long readLong(byte[] arr, int off) { - long val = 0; - - val |= (arr[off++] & 0xffL); - val |= (arr[off++] & 0xffL) << 8; - val |= (arr[off++] & 0xffL) << 16; - val |= (arr[off++] & 0xffL) << 24; - val |= (arr[off++] & 0xffL) << 32; - val |= (arr[off++] & 0xffL) << 40; - val |= (arr[off++] & 0xffL) << 48; - val |= (arr[off] & 0xffL) << 56; - - return val; - } - - /** {@inheritDoc} */ - @Override void writeFloat(byte[] arr, int off, float val) { - writeInt(arr, off, Float.floatToIntBits(val)); - } - - /** {@inheritDoc} */ - @Override float readFloat(byte[] arr, int off) { - return Float.intBitsToFloat(readInt(arr, off)); - } - - /** {@inheritDoc} */ - @Override void writeDouble(byte[] arr, int off, double val) { - writeLong(arr, off, Double.doubleToLongBits(val)); - } - - /** {@inheritDoc} */ - @Override double readDouble(byte[] arr, int off) { - return Double.longBitsToDouble(readLong(arr, off)); - } - - /** {@inheritDoc} */ - @Override void writeChar(byte[] arr, int off, char val) { - arr[off++] = (byte)(val & 0xff); - arr[off] = (byte)((val >>> 8) & 0xff); - } - - /** {@inheritDoc} */ - @Override char readChar(byte[] arr, int off) { - char val = 0; - - val |= (arr[off++] & 0xff); - val |= (arr[off] & 0xff) << 8; - - return val; - } - - /** {@inheritDoc} */ - @Override void writeBoolean(byte[] arr, int off, boolean val) { - arr[off] = (byte)(val ? 1 : 0); - } - - /** {@inheritDoc} */ - @Override boolean readBoolean(byte[] arr, int off) { - return arr[off] != 0; - } - - /** {@inheritDoc} */ - @Override void writeByteArray(byte[] arr, int off, byte[] val) { - for (byte b : val) - arr[off++] = b; - } - - /** {@inheritDoc} */ - @Override byte[] readByteArray(byte[] arr, int off, int len) { - byte[] val = new byte[len]; - - for (int i = 0; i < len; i++) - val[i] = arr[off++]; - - return val; - } - - /** {@inheritDoc} */ - @Override void writeShortArray(byte[] arr, int off, short[] val) { - for (short s : val) { - writeShort(arr, off, s); - - off += 2; - } - } - - /** {@inheritDoc} */ - @Override short[] readShortArray(byte[] arr, int off, int len) { - short[] val = new short[len]; - - for (int i = 0; i < len; i++) { - val[i] = readShort(arr, off); - - off += 2; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeIntArray(byte[] arr, int off, int[] val) { - for (int i : val) { - writeInt(arr, off, i); - - off += 4; - } - } - - /** {@inheritDoc} */ - @Override int[] readIntArray(byte[] arr, int off, int len) { - int[] val = new int[len]; - - for (int i = 0; i < len; i++) { - val[i] = readInt(arr, off); - - off += 4; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeLongArray(byte[] arr, int off, long[] val) { - for (long l : val) { - writeLong(arr, off, l); - - off += 8; - } - } - - /** {@inheritDoc} */ - @Override long[] readLongArray(byte[] arr, int off, int len) { - long[] val = new long[len]; - - for (int i = 0; i < len; i++) { - val[i] = readLong(arr, off); - - off += 8; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeFloatArray(byte[] arr, int off, float[] val) { - for (float f : val) { - writeFloat(arr, off, f); - - off += 4; - } - } - - /** {@inheritDoc} */ - @Override float[] readFloatArray(byte[] arr, int off, int len) { - float[] val = new float[len]; - - for (int i = 0; i < len; i++) { - val[i] = readFloat(arr, off); - - off += 4; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeDoubleArray(byte[] arr, int off, double[] val) { - for (double d : val) { - writeDouble(arr, off, d); - - off += 8; - } - } - - /** {@inheritDoc} */ - @Override double[] readDoubleArray(byte[] arr, int off, int len) { - double[] val = new double[len]; - - for (int i = 0; i < len; i++) { - val[i] = readDouble(arr, off); - - off += 8; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeCharArray(byte[] arr, int off, char[] val) { - for (char c : val) { - writeChar(arr, off, c); - - off += 2; - } - } - - /** {@inheritDoc} */ - @Override char[] readCharArray(byte[] arr, int off, int len) { - char[] val = new char[len]; - - for (int i = 0; i < len; i++) { - val[i] = readChar(arr, off); - - off += 2; - } - - return val; - } - - /** {@inheritDoc} */ - @Override void writeBooleanArray(byte[] arr, int off, boolean[] val) { - for (boolean b : val) - writeBoolean(arr, off++, b); - } - - /** {@inheritDoc} */ - @Override boolean[] readBooleanArray(byte[] arr, int off, int len) { - boolean[] val = new boolean[len]; - - for (int i = 0; i < len; i++) - val[i] = readBoolean(arr, off++); - - return val; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawReaderEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawReaderEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawReaderEx.java deleted file mode 100644 index c01fd81..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawReaderEx.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.portable.*; - -import org.jetbrains.annotations.*; - -/** - * Extended reader interface. - */ -public interface GridPortableRawReaderEx extends PortableRawReader { - /** - * @return Object. - * @throws PortableException In case of error. - */ - @Nullable public Object readObjectDetached() throws PortableException; -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawWriterEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawWriterEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawWriterEx.java deleted file mode 100644 index c0b2f9f..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableRawWriterEx.java +++ /dev/null @@ -1,44 +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.processors.portable.*; -import org.apache.ignite.portable.*; - -import org.jetbrains.annotations.*; - -/** - * Extended writer interface. - */ -public interface GridPortableRawWriterEx extends PortableRawWriter, AutoCloseable { - /** - * @param obj Object to write. - * @throws PortableException In case of error. - */ - public void writeObjectDetached(@Nullable Object obj) throws PortableException; - - /** - * @return Output stream. - */ - public GridPortableOutputStream out(); - - /** - * Cleans resources. - */ - @Override public void close(); -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableReaderContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableReaderContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableReaderContext.java deleted file mode 100644 index 58281d4..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableReaderContext.java +++ /dev/null @@ -1,83 +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.util.typedef.internal.*; -import org.apache.ignite.portable.*; - -import org.jetbrains.annotations.*; - -import java.util.*; - -/** - * Reader context. - */ -class GridPortableReaderContext { - /** */ - private Map<Integer, Object> oHandles; - - /** */ - private Map<Integer, PortableObject> poHandles; - - /** - * @param handle Handle. - * @param obj Object. - */ - void setObjectHandler(int handle, Object obj) { - assert obj != null; - - if (oHandles == null) - oHandles = new HashMap<>(3, 1.0f); - - oHandles.put(handle, obj); - } - - /** - * @param handle Handle. - * @param po Portable object. - */ - void setPortableHandler(int handle, PortableObject po) { - assert po != null; - - if (poHandles == null) - poHandles = new HashMap<>(3, 1.0f); - - poHandles.put(handle, po); - } - - /** - * @param handle Handle. - * @return Object. - */ - @Nullable Object getObjectByHandle(int handle) { - return oHandles != null ? oHandles.get(handle) : null; - } - - /** - * @param handle Handle. - * @return Object. - */ - @Nullable PortableObject getPortableByHandle(int handle) { - return poHandles != null ? poHandles.get(handle) : null; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(GridPortableReaderContext.class, this); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableThreadLocalMemoryAllocator.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableThreadLocalMemoryAllocator.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableThreadLocalMemoryAllocator.java deleted file mode 100644 index 29d4fb6..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableThreadLocalMemoryAllocator.java +++ /dev/null @@ -1,163 +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.*; -import org.apache.ignite.internal.util.*; -import org.apache.ignite.internal.util.typedef.internal.*; - -import sun.misc.*; - -import static org.apache.ignite.IgniteSystemProperties.*; - -/** - * Thread-local memory allocator. - */ -public class GridPortableThreadLocalMemoryAllocator implements GridPortableMemoryAllocator { - /** Memory allocator instance. */ - public static final GridPortableThreadLocalMemoryAllocator THREAD_LOCAL_ALLOC = - new GridPortableThreadLocalMemoryAllocator(); - - /** Holders. */ - private static final ThreadLocal<ByteArrayHolder> holders = new ThreadLocal<>(); - - /** Unsafe instance. */ - protected static final Unsafe UNSAFE = GridUnsafe.unsafe(); - - /** Array offset: byte. */ - protected static final long BYTE_ARR_OFF = UNSAFE.arrayBaseOffset(byte[].class); - - /** - * Ensures singleton. - */ - private GridPortableThreadLocalMemoryAllocator() { - // No-op. - } - - /** {@inheritDoc} */ - @Override public byte[] allocate(int size) { - ByteArrayHolder holder = holders.get(); - - if (holder == null) - holders.set(holder = new ByteArrayHolder()); - - if (holder.acquired) - return new byte[size]; - - holder.acquired = true; - - if (holder.data == null || size > holder.data.length) - holder.data = new byte[size]; - - return holder.data; - } - - /** {@inheritDoc} */ - @Override public byte[] reallocate(byte[] data, int size) { - ByteArrayHolder holder = holders.get(); - - assert holder != null; - - byte[] newData = new byte[size]; - - if (holder.data == data) - holder.data = newData; - - UNSAFE.copyMemory(data, BYTE_ARR_OFF, newData, BYTE_ARR_OFF, data.length); - - return newData; - } - - /** {@inheritDoc} */ - @Override public void release(byte[] data, int maxMsgSize) { - ByteArrayHolder holder = holders.get(); - - assert holder != null; - - if (holder.data != data) - return; - - holder.maxMsgSize = maxMsgSize; - holder.acquired = false; - - holder.shrink(); - } - - /** {@inheritDoc} */ - @Override public long allocateDirect(int size) { - return 0; - } - - /** {@inheritDoc} */ - @Override public long reallocateDirect(long addr, int size) { - return 0; - } - - /** {@inheritDoc} */ - @Override public void releaseDirect(long addr) { - // No-op - } - - /** - * Checks whether a thread-local array is acquired or not. - * The function is used by Unit tests. - * - * @return {@code true} if acquired {@code false} otherwise. - */ - public boolean isThreadLocalArrayAcquired() { - ByteArrayHolder holder = holders.get(); - - return holder != null && holder.acquired; - } - - /** - * Thread-local byte array holder. - */ - private static class ByteArrayHolder { - /** */ - private static final Long CHECK_FREQ = Long.getLong(IGNITE_MARSHAL_BUFFERS_RECHECK, 10000); - - /** Data array */ - private byte[] data; - - /** Max message size detected between checks. */ - private int maxMsgSize; - - /** Last time array size is checked. */ - private long lastCheck = U.currentTimeMillis(); - - /** Whether the holder is acquired or not. */ - private boolean acquired; - - /** - * Shrinks array size if needed. - */ - private void shrink() { - long now = U.currentTimeMillis(); - - if (now - lastCheck >= CHECK_FREQ) { - int halfSize = data.length >> 1; - - if (maxMsgSize < halfSize) - data = new byte[halfSize]; - - lastCheck = now; - } - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableUtils.java deleted file mode 100644 index cb4d246..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableUtils.java +++ /dev/null @@ -1,380 +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.portable.*; - -import org.jetbrains.annotations.*; - -import java.math.*; -import java.sql.*; -import java.util.*; -import java.util.Date; - -import static org.apache.ignite.internal.portable.GridPortableMarshaller.*; - -/** - * - */ -public class GridPortableUtils { - /** */ - public static final Map<Class<?>, Byte> PLAIN_CLASS_TO_FLAG = new HashMap<>(); - - /** */ - public static final Map<Byte, Class<?>> FLAG_TO_CLASS = new HashMap<>(); - - /** {@code true} if serialized value of this type cannot contain references to objects. */ - private static final boolean[] PLAIN_TYPE_FLAG = new boolean[102]; - - /** Portable classes. */ - private static final Collection<Class<?>> PORTABLE_CLS = new HashSet<>(); - - /** - * - */ - static { - PORTABLE_CLS.add(Byte.class); - PORTABLE_CLS.add(Short.class); - PORTABLE_CLS.add(Integer.class); - PORTABLE_CLS.add(Long.class); - PORTABLE_CLS.add(Float.class); - PORTABLE_CLS.add(Double.class); - PORTABLE_CLS.add(Character.class); - PORTABLE_CLS.add(Boolean.class); - PORTABLE_CLS.add(String.class); - PORTABLE_CLS.add(UUID.class); - PORTABLE_CLS.add(Date.class); - PORTABLE_CLS.add(Timestamp.class); - PORTABLE_CLS.add(BigDecimal.class); - PORTABLE_CLS.add(byte[].class); - PORTABLE_CLS.add(short[].class); - PORTABLE_CLS.add(int[].class); - PORTABLE_CLS.add(long[].class); - PORTABLE_CLS.add(float[].class); - PORTABLE_CLS.add(double[].class); - PORTABLE_CLS.add(char[].class); - PORTABLE_CLS.add(boolean[].class); - PORTABLE_CLS.add(String[].class); - PORTABLE_CLS.add(UUID[].class); - PORTABLE_CLS.add(Date[].class); - PORTABLE_CLS.add(Timestamp[].class); - PORTABLE_CLS.add(BigDecimal[].class); - } - - /** - * - */ - static { - PLAIN_CLASS_TO_FLAG.put(Byte.class, GridPortableMarshaller.BYTE); - PLAIN_CLASS_TO_FLAG.put(Short.class, GridPortableMarshaller.SHORT); - PLAIN_CLASS_TO_FLAG.put(Integer.class, GridPortableMarshaller.INT); - PLAIN_CLASS_TO_FLAG.put(Long.class, GridPortableMarshaller.LONG); - PLAIN_CLASS_TO_FLAG.put(Float.class, GridPortableMarshaller.FLOAT); - PLAIN_CLASS_TO_FLAG.put(Double.class, GridPortableMarshaller.DOUBLE); - PLAIN_CLASS_TO_FLAG.put(Character.class, GridPortableMarshaller.CHAR); - PLAIN_CLASS_TO_FLAG.put(Boolean.class, GridPortableMarshaller.BOOLEAN); - PLAIN_CLASS_TO_FLAG.put(BigDecimal.class, GridPortableMarshaller.DECIMAL); - PLAIN_CLASS_TO_FLAG.put(String.class, GridPortableMarshaller.STRING); - PLAIN_CLASS_TO_FLAG.put(UUID.class, GridPortableMarshaller.UUID); - PLAIN_CLASS_TO_FLAG.put(Date.class, GridPortableMarshaller.DATE); - - PLAIN_CLASS_TO_FLAG.put(byte[].class, GridPortableMarshaller.BYTE_ARR); - PLAIN_CLASS_TO_FLAG.put(short[].class, GridPortableMarshaller.SHORT_ARR); - PLAIN_CLASS_TO_FLAG.put(int[].class, GridPortableMarshaller.INT_ARR); - PLAIN_CLASS_TO_FLAG.put(long[].class, GridPortableMarshaller.LONG_ARR); - PLAIN_CLASS_TO_FLAG.put(float[].class, GridPortableMarshaller.FLOAT_ARR); - PLAIN_CLASS_TO_FLAG.put(double[].class, GridPortableMarshaller.DOUBLE_ARR); - PLAIN_CLASS_TO_FLAG.put(char[].class, GridPortableMarshaller.CHAR_ARR); - PLAIN_CLASS_TO_FLAG.put(boolean[].class, GridPortableMarshaller.BOOLEAN_ARR); - PLAIN_CLASS_TO_FLAG.put(BigDecimal[].class, GridPortableMarshaller.DECIMAL_ARR); - PLAIN_CLASS_TO_FLAG.put(String[].class, GridPortableMarshaller.STRING_ARR); - PLAIN_CLASS_TO_FLAG.put(UUID[].class, GridPortableMarshaller.UUID_ARR); - PLAIN_CLASS_TO_FLAG.put(Date[].class, GridPortableMarshaller.DATE_ARR); - - for (Map.Entry<Class<?>, Byte> entry : PLAIN_CLASS_TO_FLAG.entrySet()) - FLAG_TO_CLASS.put(entry.getValue(), entry.getKey()); - - PLAIN_CLASS_TO_FLAG.put(byte.class, GridPortableMarshaller.BYTE); - PLAIN_CLASS_TO_FLAG.put(short.class, GridPortableMarshaller.SHORT); - PLAIN_CLASS_TO_FLAG.put(int.class, GridPortableMarshaller.INT); - PLAIN_CLASS_TO_FLAG.put(long.class, GridPortableMarshaller.LONG); - PLAIN_CLASS_TO_FLAG.put(float.class, GridPortableMarshaller.FLOAT); - PLAIN_CLASS_TO_FLAG.put(double.class, GridPortableMarshaller.DOUBLE); - PLAIN_CLASS_TO_FLAG.put(char.class, GridPortableMarshaller.CHAR); - PLAIN_CLASS_TO_FLAG.put(boolean.class, GridPortableMarshaller.BOOLEAN); - - for (byte b : new byte[] { - BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, - CHAR, BOOLEAN, DECIMAL, STRING, UUID, DATE, - BYTE_ARR, SHORT_ARR, INT_ARR, LONG_ARR, FLOAT_ARR, DOUBLE_ARR, - CHAR_ARR, BOOLEAN_ARR, DECIMAL_ARR, STRING_ARR, UUID_ARR, DATE_ARR, - ENUM, ENUM_ARR, NULL}) { - - PLAIN_TYPE_FLAG[b] = true; - } - } - - /** - * Write value with flag. e.g. writePlainObject(writer, (byte)77) will write two byte: {BYTE, 77}. - * - * @param writer W - * @param val Value. - */ - public static void writePlainObject(GridPortableWriterExImpl writer, Object val) { - Byte flag = PLAIN_CLASS_TO_FLAG.get(val.getClass()); - - if (flag == null) - throw new IllegalArgumentException("Can't write object with type: " + val.getClass()); - - switch (flag) { - case BYTE: - writer.writeByte(flag); - writer.writeByte((Byte)val); - - break; - - case SHORT: - writer.writeByte(flag); - writer.writeShort((Short)val); - - break; - - case INT: - writer.writeByte(flag); - writer.writeInt((Integer)val); - - break; - - case LONG: - writer.writeByte(flag); - writer.writeLong((Long)val); - - break; - - case FLOAT: - writer.writeByte(flag); - writer.writeFloat((Float)val); - - break; - - case DOUBLE: - writer.writeByte(flag); - writer.writeDouble((Double)val); - - break; - - case CHAR: - writer.writeByte(flag); - writer.writeChar((Character)val); - - break; - - case BOOLEAN: - writer.writeByte(flag); - writer.writeBoolean((Boolean)val); - - break; - - case DECIMAL: - writer.doWriteDecimal((BigDecimal)val); - - break; - - case STRING: - writer.doWriteString((String)val); - - break; - - case UUID: - writer.doWriteUuid((UUID)val); - - break; - - case DATE: - if (val instanceof Timestamp) - writer.doWriteTimestamp((Timestamp)val); - else - writer.doWriteDate((Date)val); - - break; - - case BYTE_ARR: - writer.doWriteByteArray((byte[])val); - - break; - - case SHORT_ARR: - writer.doWriteShortArray((short[])val); - - break; - - case INT_ARR: - writer.doWriteIntArray((int[])val); - - break; - - case LONG_ARR: - writer.doWriteLongArray((long[])val); - - break; - - case FLOAT_ARR: - writer.doWriteFloatArray((float[])val); - - break; - - case DOUBLE_ARR: - writer.doWriteDoubleArray((double[])val); - - break; - - case CHAR_ARR: - writer.doWriteCharArray((char[])val); - - break; - - case BOOLEAN_ARR: - writer.doWriteBooleanArray((boolean[])val); - - break; - - case DECIMAL_ARR: - writer.doWriteDecimalArray((BigDecimal[])val); - - break; - - case STRING_ARR: - writer.doWriteStringArray((String[])val); - - break; - - case UUID_ARR: - writer.doWriteUuidArray((UUID[])val); - - break; - - case DATE_ARR: - writer.doWriteDateArray((Date[])val); - - break; - - default: - throw new IllegalArgumentException("Can't write object with type: " + val.getClass()); - } - } - - /** - * @param obj Value to unwrap. - * @return Unwrapped value. - */ - public static Object unwrapLazy(@Nullable Object obj) { - if (obj instanceof GridPortableLazyValue) - return ((GridPortableLazyValue)obj).value(); - - return obj; - } - - /** - * @param delegate Iterator to delegate. - * @return New iterator. - */ - public static Iterator<Object> unwrapLazyIterator(final Iterator<Object> delegate) { - return new Iterator<Object>() { - @Override public boolean hasNext() { - return delegate.hasNext(); - } - - @Override public Object next() { - return unwrapLazy(delegate.next()); - } - - @Override public void remove() { - delegate.remove(); - } - }; - } - - /** - * @return {@code true} if content of serialized value cannot contain references to other object. - */ - public static boolean isPlainType(int type) { - return type > 0 && type < PLAIN_TYPE_FLAG.length && PLAIN_TYPE_FLAG[type]; - } - - /** - * @param cls Class. - * @return Portable field type. - */ - public static byte typeByClass(Class<?> cls) { - if (Date.class.isAssignableFrom(cls)) - return DATE; - - Byte type = PLAIN_CLASS_TO_FLAG.get(cls); - - if (type != null) - return type; - - if (cls.isEnum()) - return ENUM; - - if (cls.isArray()) - return cls.getComponentType().isEnum() || cls.getComponentType() == Enum.class ? ENUM_ARR : OBJ_ARR; - - if (Collection.class.isAssignableFrom(cls)) - return COL; - - if (Map.class.isAssignableFrom(cls)) - return MAP; - - if (Map.Entry.class.isAssignableFrom(cls)) - return MAP; - - return OBJ; - } - - /** - * Tells whether provided type is portable or a collection. - * - * @param cls Class to check. - * @return Whether type is portable or a collection. - */ - public static boolean isPortableOrCollectionType(Class<?> cls) { - assert cls != null; - - return isPortableType(cls) || - cls == Object[].class || - Collection.class.isAssignableFrom(cls) || - Map.class.isAssignableFrom(cls) || - Map.Entry.class.isAssignableFrom(cls); - } - - /** - * Tells whether provided type is portable. - * - * @param cls Class to check. - * @return Whether type is portable. - */ - public static boolean isPortableType(Class<?> cls) { - assert cls != null; - - return PortableObject.class.isAssignableFrom(cls) || - PORTABLE_CLS.contains(cls) || - cls.isEnum() || - (cls.isArray() && cls.getComponentType().isEnum()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4662feca/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableValueWithType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableValueWithType.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableValueWithType.java deleted file mode 100644 index 8d696e5..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/GridPortableValueWithType.java +++ /dev/null @@ -1,74 +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.processors.cache.portable.*; -import org.apache.ignite.internal.util.typedef.internal.*; - -/** - * - */ -class GridPortableValueWithType implements GridPortableLazyValue { - /** */ - private byte type; - - /** */ - private Object val; - - /** - * @param type Type - * @param val Value. - */ - GridPortableValueWithType(byte type, Object val) { - this.type = type; - this.val = val; - } - - /** {@inheritDoc} */ - @Override public void writeTo(GridPortableWriterExImpl writer, GridPortableBuilderSerializer ctx) { - if (val instanceof GridPortableBuilderSerializationAware) - ((GridPortableBuilderSerializationAware)val).writeTo(writer, ctx); - else - ctx.writeValue(writer, val); - } - - /** {@inheritDoc} */ - public String typeName() { - return CacheObjectPortableProcessorImpl.fieldTypeName(type); - } - - /** {@inheritDoc} */ - @Override public Object value() { - if (val instanceof GridPortableLazyValue) - return ((GridPortableLazyValue)val).value(); - - return val; - } - - /** - * @param val New value. - */ - public void value(Object val) { - this.val = val; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(GridPortableValueWithType.class, this); - } -}