IGNITE-61 - Direct marshalling
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/215268fe Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/215268fe Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/215268fe Branch: refs/heads/sprint-1 Commit: 215268fe5c8461c65fc93868e21bba45e415072d Parents: 39fcfb6 Author: Valentin Kulichenko <vkuliche...@gridgain.com> Authored: Sat Feb 7 22:17:36 2015 -0800 Committer: Valentin Kulichenko <vkuliche...@gridgain.com> Committed: Sat Feb 7 22:17:36 2015 -0800 ---------------------------------------------------------------------- .../CommunicationMessageCodeGenerator.java | 65 +++++++++----------- .../internal/direct/DirectByteBufferStream.java | 13 ++-- .../internal/direct/DirectMessageReader.java | 12 ++-- .../extensions/communication/MessageReader.java | 6 +- 4 files changed, 46 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/215268fe/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java ---------------------------------------------------------------------- diff --git a/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java index b8c6aa9..45a383c 100644 --- a/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java +++ b/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java @@ -449,7 +449,7 @@ public class CommunicationMessageCodeGenerator { indent++; returnFalseIfReadFailed(field.getType(), field.getName(), colAnn != null ? colAnn.value() : null, - mapAnn != null ? mapAnn.keyType() : null, mapAnn != null ? mapAnn.valueType() : null, false); + mapAnn != null ? mapAnn.keyType() : null, mapAnn != null ? mapAnn.valueType() : null); read.add(EMPTY); read.add(builder().a(STATE_VAR).a("++;").toString()); @@ -543,75 +543,72 @@ public class CommunicationMessageCodeGenerator { * @param colItemType Collection item type. * @param mapKeyType Map key type. * @param mapValType Map value type. - * @param raw Raw read flag. */ private void returnFalseIfReadFailed(Class<?> type, @Nullable String name, @Nullable Class<?> colItemType, - @Nullable Class<?> mapKeyType, @Nullable Class<?> mapValType, boolean raw) { + @Nullable Class<?> mapKeyType, @Nullable Class<?> mapValType) { assert type != null; - String field = raw ? "null" : '"' + name + '"'; - - String retType = type.getSimpleName(); + String field = '"' + name + '"'; if (type == byte.class) - returnFalseIfReadFailed("byte", name, "reader.readByte", field); + returnFalseIfReadFailed(name, "reader.readByte", field); else if (type == short.class) - returnFalseIfReadFailed("short", name, "reader.readShort", field); + returnFalseIfReadFailed(name, "reader.readShort", field); else if (type == int.class) - returnFalseIfReadFailed("int", name, "reader.readInt", field); + returnFalseIfReadFailed(name, "reader.readInt", field); else if (type == long.class) - returnFalseIfReadFailed("long", name, "reader.readLong", field); + returnFalseIfReadFailed(name, "reader.readLong", field); else if (type == float.class) - returnFalseIfReadFailed("float", name, "reader.readFloat", field); + returnFalseIfReadFailed(name, "reader.readFloat", field); else if (type == double.class) - returnFalseIfReadFailed("double", name, "reader.readDouble", field); + returnFalseIfReadFailed(name, "reader.readDouble", field); else if (type == char.class) - returnFalseIfReadFailed("char", name, "reader.readChar", field); + returnFalseIfReadFailed(name, "reader.readChar", field); else if (type == boolean.class) - returnFalseIfReadFailed("boolean", name, "reader.readBoolean", field); + returnFalseIfReadFailed(name, "reader.readBoolean", field); else if (type == byte[].class) - returnFalseIfReadFailed(retType, name, "reader.readByteArray", field); + returnFalseIfReadFailed(name, "reader.readByteArray", field); else if (type == short[].class) - returnFalseIfReadFailed(retType, name, "reader.readShortArray", field); + returnFalseIfReadFailed(name, "reader.readShortArray", field); else if (type == int[].class) - returnFalseIfReadFailed(retType, name, "reader.readIntArray", field); + returnFalseIfReadFailed(name, "reader.readIntArray", field); else if (type == long[].class) - returnFalseIfReadFailed(retType, name, "reader.readLongArray", field); + returnFalseIfReadFailed(name, "reader.readLongArray", field); else if (type == float[].class) - returnFalseIfReadFailed(retType, name, "reader.readFloatArray", field); + returnFalseIfReadFailed(name, "reader.readFloatArray", field); else if (type == double[].class) - returnFalseIfReadFailed(retType, name, "reader.readDoubleArray", field); + returnFalseIfReadFailed(name, "reader.readDoubleArray", field); else if (type == char[].class) - returnFalseIfReadFailed(retType, name, "reader.readCharArray", field); + returnFalseIfReadFailed(name, "reader.readCharArray", field); else if (type == boolean[].class) - returnFalseIfReadFailed(retType, name, "reader.readBooleanArray", field); + returnFalseIfReadFailed(name, "reader.readBooleanArray", field); else if (type == String.class) - returnFalseIfReadFailed(retType, name, "reader.readString", field); + returnFalseIfReadFailed(name, "reader.readString", field); else if (type == BitSet.class) - returnFalseIfReadFailed(retType, name, "reader.readBitSet", field); + returnFalseIfReadFailed(name, "reader.readBitSet", field); else if (type == UUID.class) - returnFalseIfReadFailed(retType, name, "reader.readUuid", field); + returnFalseIfReadFailed(name, "reader.readUuid", field); else if (type == IgniteUuid.class) - returnFalseIfReadFailed(retType, name, "reader.readGridUuid", field); + returnFalseIfReadFailed(name, "reader.readIgniteUuid", field); else if (type.isEnum()) - returnFalseIfReadFailed(retType, name, "reader.readEnum", field, retType + ".class"); + returnFalseIfReadFailed(name, "reader.readEnum", field, type.getSimpleName() + ".class"); else if (BASE_CLS.isAssignableFrom(type)) - returnFalseIfReadFailed(retType, name, "reader.readMessage", field); + returnFalseIfReadFailed(name, "reader.readMessage", field); else if (type.isArray()) { - returnFalseIfReadFailed(retType, name, "reader.readObjectArray", field, + returnFalseIfReadFailed(name, "reader.readObjectArray", field, type.getComponentType().getSimpleName() + ".class"); } else if (Collection.class.isAssignableFrom(type)) { assert colItemType != null; - returnFalseIfReadFailed(retType, name, "reader.readCollection", field, + returnFalseIfReadFailed(name, "reader.readCollection", field, colItemType.getSimpleName() + ".class"); } else if (Map.class.isAssignableFrom(type)) { assert mapKeyType != null; assert mapValType != null; - returnFalseIfReadFailed(retType, name, "reader.readMap", field, mapKeyType.getSimpleName() + ".class", + returnFalseIfReadFailed(name, "reader.readMap", field, mapKeyType.getSimpleName() + ".class", mapValType.getSimpleName() + ".class"); } else @@ -619,13 +616,11 @@ public class CommunicationMessageCodeGenerator { } /** - * @param retType Return type. * @param var Variable name. * @param mtd Method name. * @param args Method arguments. */ - private void returnFalseIfReadFailed(String retType, String var, String mtd, @Nullable String... args) { - assert retType != null; + private void returnFalseIfReadFailed(String var, String mtd, @Nullable String... args) { assert mtd != null; String argsStr = ""; @@ -640,7 +635,7 @@ public class CommunicationMessageCodeGenerator { read.add(builder().a(var).a(" = ").a(mtd).a("(").a(argsStr).a(");").toString()); read.add(EMPTY); - read.add(builder().a("if (!reader.lastRead())").toString()); + read.add(builder().a("if (!reader.isLastRead())").toString()); indent++; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/215268fe/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java index e674861..3234a64 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectByteBufferStream.java @@ -845,16 +845,17 @@ public class DirectByteBufferStream { } @SuppressWarnings("unchecked") - public <T extends Enum<T>> Enum<T> readEnum(Class<T> enumCls) { + public <T extends Enum<T>> T readEnum(Class<T> enumCls) { byte ord = readByte(); - return ord >= 0 ? (Enum<T>)GridEnumCache.get(enumCls)[ord] : null; + return ord >= 0 ? (T)GridEnumCache.get(enumCls)[ord] : null; } /** * @return Message. */ - public MessageAdapter readMessage() { + @SuppressWarnings("unchecked") + public <T extends MessageAdapter> T readMessage() { if (!msgTypeDone) { if (!buf.hasRemaining()) { lastFinished = false; @@ -877,7 +878,7 @@ public class DirectByteBufferStream { msgTypeDone = false; msg = null; - return msg0; + return (T)msg0; } else return null; @@ -926,7 +927,7 @@ public class DirectByteBufferStream { } @SuppressWarnings("unchecked") - public <T> Collection<T> readCollection(Class<T> itemCls) { + public <C extends Collection<T>, T> C readCollection(Class<T> itemCls) { if (readSize == -1) { int size = readInt(); @@ -964,7 +965,7 @@ public class DirectByteBufferStream { col = null; - return col0; + return (C)col0; } @SuppressWarnings("unchecked") http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/215268fe/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java index 3875cfe..f0efbae 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java @@ -227,8 +227,8 @@ public class DirectMessageReader implements MessageReader { } /** {@inheritDoc} */ - @Override public <T extends Enum<T>> Enum<T> readEnum(String name, Class<T> enumCls) { - Enum<T> val = stream.readEnum(enumCls); + @Override public <T extends Enum<T>> T readEnum(String name, Class<T> enumCls) { + T val = stream.readEnum(enumCls); lastRead = stream.lastFinished(); @@ -236,8 +236,8 @@ public class DirectMessageReader implements MessageReader { } /** {@inheritDoc} */ - @Nullable @Override public MessageAdapter readMessage(String name) { - MessageAdapter msg = stream.readMessage(); + @Nullable @Override public <T extends MessageAdapter> T readMessage(String name) { + T msg = stream.readMessage(); lastRead = stream.lastFinished(); @@ -254,8 +254,8 @@ public class DirectMessageReader implements MessageReader { } /** {@inheritDoc} */ - @Override public <T> Collection<T> readCollection(String name, Class<T> itemCls) { - Collection<T> col = stream.readCollection(itemCls); + @Override public <C extends Collection<T>, T> C readCollection(String name, Class<T> itemCls) { + C col = stream.readCollection(itemCls); lastRead = stream.lastFinished(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/215268fe/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java index fa4ca66..eca6afb 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java @@ -60,13 +60,13 @@ public interface MessageReader { public IgniteUuid readIgniteUuid(String name); - public <T extends Enum<T>> Enum<T> readEnum(String name, Class<T> enumCls); + public <T extends Enum<T>> T readEnum(String name, Class<T> enumCls); - public MessageAdapter readMessage(String name); + public <T extends MessageAdapter> T readMessage(String name); public <T> T[] readObjectArray(String name, Class<T> itemCls); - public <T> Collection<T> readCollection(String name, Class<T> itemCls); + public <C extends Collection<T>, T> C readCollection(String name, Class<T> itemCls); public <K, V> Map<K, V> readMap(String name, Class<K> keyCls, Class<V> valCls);