Merge branch 'ignite-sprint-1' of github.com:ggprivate/ggprivate into ignite-61
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0b9ef466 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0b9ef466 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0b9ef466 Branch: refs/heads/ignite-61 Commit: 0b9ef4661cd90d7f9c4e0e3cab8777b82e0e9ff5 Parents: 9d7be95 Author: Valentin Kulichenko <[email protected]> Authored: Thu Feb 5 11:33:56 2015 -0800 Committer: Valentin Kulichenko <[email protected]> Committed: Thu Feb 5 11:33:56 2015 -0800 ---------------------------------------------------------------------- modules/codegen/pom.xml | 50 + .../CommunicationMessageCodeGenerator.java | 1127 ++++++++++++++++++ .../ignite/internal/GridJobExecuteRequest.java | 866 +++++++------- modules/tools/pom.xml | 6 - .../CommunicationMessageCodeGenerator.java | 1127 ------------------ pom.xml | 1 + 6 files changed, 1611 insertions(+), 1566 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b9ef466/modules/codegen/pom.xml ---------------------------------------------------------------------- diff --git a/modules/codegen/pom.xml b/modules/codegen/pom.xml new file mode 100644 index 0000000..66a4eab --- /dev/null +++ b/modules/codegen/pom.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + 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. + --> + +<!-- + POM file. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite</artifactId> + <version>${ignite.version}</version> + <relativePath>../..</relativePath> + </parent> + + <artifactId>ignite-codegen</artifactId> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.7</maven.compiler.source> + <maven.compiler.target>1.7</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-core</artifactId> + <version>${ignite.version}</version> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b9ef466/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 new file mode 100644 index 0000000..469b575 --- /dev/null +++ b/modules/codegen/src/main/java/org/apache/ignite/codegen/CommunicationMessageCodeGenerator.java @@ -0,0 +1,1127 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ +* __ ____/___________(_)______ /__ ____/______ ____(_)_______ +* _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ +* / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / +* \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ +*/ + +package org.apache.ignite.codegen; + +import com.sun.istack.internal.*; +import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.*; +import org.apache.ignite.internal.processors.cache.version.*; +import org.apache.ignite.internal.processors.clock.*; +import org.apache.ignite.internal.util.*; +import org.apache.ignite.internal.util.direct.*; +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; + +import java.io.*; +import java.lang.reflect.*; +import java.net.*; +import java.nio.*; +import java.util.*; + +import static java.lang.reflect.Modifier.*; + +/** +* Direct marshallable code generator. +*/ +public class CommunicationMessageCodeGenerator { + /** */ + private static final Comparator<Field> FIELD_CMP = new Comparator<Field>() { + @Override public int compare(Field f1, Field f2) { + int ver1 = 0; + + GridDirectVersion verAnn1 = f1.getAnnotation(GridDirectVersion.class); + + if (verAnn1 != null) { + ver1 = verAnn1.value(); + + assert ver1 > 0; + } + + int ver2 = 0; + + GridDirectVersion verAnn2 = f2.getAnnotation(GridDirectVersion.class); + + if (verAnn2 != null) { + ver2 = verAnn2.value(); + + assert ver2 > 0; + } + + return ver1 < ver2 ? -1 : ver1 > ver2 ? 1 : f1.getName().compareTo(f2.getName()); + } + }; + + /** */ + private static final String SRC_DIR = U.getGridGainHome() + "/modules/core/src/main/java"; + + /** */ + private static final Class<?> BASE_CLS = GridTcpCommunicationMessageAdapter.class; + + /** */ + private static final String EMPTY = ""; + + /** */ + private static final String TAB = " "; + + /** */ + private static final String COMM_STATE_VAR = "commState"; + + /** */ + private static final String BUF_VAR = "buf"; + + /** */ + private static final String STATE_VAR = COMM_STATE_VAR + "." + "idx"; + + /** */ + private static final String TYPE_WRITTEN_VAR = COMM_STATE_VAR + "." + "typeWritten"; + + /** */ + private static final String IT_VAR = COMM_STATE_VAR + "." + "it"; + + /** */ + private static final String CUR_VAR = COMM_STATE_VAR + "." + "cur"; + + /** */ + private static final String KEY_DONE_VAR = COMM_STATE_VAR + "." + "keyDone"; + + /** */ + private static final String READ_SIZE_VAR = COMM_STATE_VAR + "." + "readSize"; + + /** */ + private static final String READ_ITEMS_VAR = COMM_STATE_VAR + "." + "readItems"; + + /** */ + private static final String DFLT_LOC_VAR = "_val"; + + /** */ + private final Collection<String> write = new ArrayList<>(); + + /** */ + private final Collection<String> read = new ArrayList<>(); + + /** */ + private final Collection<String> clone = new ArrayList<>(); + + /** */ + private final Collection<String> clone0 = new ArrayList<>(); + + /** */ + private final Map<Class<?>, Integer> fieldCnt = new HashMap<>(); + + /** */ + private List<Field> fields; + + /** */ + private int indent; + + /** + * @param args Arguments. + */ + public static void main(String[] args) { + CommunicationMessageCodeGenerator gen = new CommunicationMessageCodeGenerator(); + + try { + gen.generateAll(true); + } + catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Generates code for all classes. + * + * @param write Whether to write to file. + * @throws Exception In case of error. + */ + public void generateAll(boolean write) throws Exception { + Collection<Class<? extends GridTcpCommunicationMessageAdapter>> classes = classes(); + + byte type = 0; + + for (Class<? extends GridTcpCommunicationMessageAdapter> cls : classes) { + boolean isAbstract = Modifier.isAbstract(cls.getModifiers()); + + System.out.println("Processing class: " + cls.getName() + (isAbstract ? " (abstract)" : "")); + + if (write) + generateAndWrite(cls, isAbstract ? -1 : type++); + else + generate(cls); + } + +// type = 0; +// +// for (Class<? extends GridTcpCommunicationMessageAdapter> cls : classes) { +// if (Modifier.isAbstract(cls.getModifiers())) +// continue; +// +// System.out.println("case " + type++ + ":"); +// System.out.println(" return new " + cls.getSimpleName() + "();"); +// System.out.println(); +// } + } + + /** + * Generates code for provided class and writes it to source file. + * Note: this method must be called only from {@code generateAll(boolean)} + * and only with updating {@code CLASSES_ORDER_FILE} and other auto generated files. + * + * @param cls Class. + * @throws Exception In case of error. + */ + @SuppressWarnings("ConstantConditions") + private void generateAndWrite(Class<? extends GridTcpCommunicationMessageAdapter> cls, byte type) throws Exception { + assert cls != null; + + generate(cls); + + File file = new File(SRC_DIR, cls.getName().replace('.', File.separatorChar) + ".java"); + + if (!file.exists() || !file.isFile()) { + System.out.println(" Source file not found: " + file.getPath()); + + return; + } + + Collection<String> src = new ArrayList<>(); + + BufferedReader rdr = null; + + try { + rdr = new BufferedReader(new FileReader(file)); + + String line; + boolean skip = false; + + boolean writeFound = false; + boolean readFound = false; + boolean cloneFound = false; + boolean clone0Found = false; + + while ((line = rdr.readLine()) != null) { + if (!skip) { + src.add(line); + + if (line.contains("public boolean writeTo(ByteBuffer buf)")) { + src.addAll(write); + + skip = true; + + writeFound = true; + } + else if (line.contains("public boolean readFrom(ByteBuffer buf)")) { + src.addAll(read); + + skip = true; + + readFound = true; + } +// else if (type >= 0 && line.contains("public byte directType()")) { +// src.add(TAB + TAB + "return " + type + ';'); +// +// skip = true; +// } + else if (line.contains("public GridTcpCommunicationMessageAdapter clone()")) { + src.addAll(clone); + + skip = true; + + cloneFound = true; + } + else if (line.contains("protected void clone0(GridTcpCommunicationMessageAdapter _msg)")) { + src.addAll(clone0); + + skip = true; + + clone0Found = true; + } + } + else if (line.startsWith(TAB + "}")) { + src.add(line); + + skip = false; + } + } + + if (!writeFound) + System.out.println(" writeTo method doesn't exist."); + + if (!readFound) + System.out.println(" readFrom method doesn't exist."); + + if (!cloneFound) + System.out.println(" clone method doesn't exist."); + + if (!clone0Found) + System.out.println(" clone0 method doesn't exist."); + } + finally { + if (rdr != null) + rdr.close(); + } + + BufferedWriter wr = null; + + try { + wr = new BufferedWriter(new FileWriter(file)); + + for (String line : src) + wr.write(line + '\n'); + } + finally { + if (wr != null) + wr.close(); + } + } + + /** + * Generates code for provided class. + * + * @param cls Class. + * @throws Exception In case of error. + */ + public void generate(Class<? extends GridTcpCommunicationMessageAdapter> cls) throws Exception { + assert cls != null; + + write.clear(); + read.clear(); + clone.clear(); + clone0.clear(); + + fields = new ArrayList<>(); + + Field[] declaredFields = cls.getDeclaredFields(); + + for (Field field : declaredFields) { + int mod = field.getModifiers(); + + if (!isStatic(mod) && !isTransient(mod) && !field.isAnnotationPresent(GridDirectTransient.class)) + fields.add(field); + } + + Collections.sort(fields, FIELD_CMP); + + indent = 2; + + boolean hasSuper = cls.getSuperclass() != BASE_CLS; + + String clsName = cls.getSimpleName(); + + if (!Modifier.isAbstract(cls.getModifiers())) { + clone.add(builder().a(clsName).a(" _clone = new ").a(clsName).a("();").toString()); + clone.add(EMPTY); + clone.add(builder().a("clone0(_clone);").toString()); + clone.add(EMPTY); + clone.add(builder().a("return _clone;").toString()); + } + + if (hasSuper) { + clone0.add(builder().a("super.clone0(_msg);").toString()); + clone0.add(EMPTY); + } + + Collection<Field> cloningFields = new ArrayList<>(declaredFields.length); + + for (Field field: declaredFields) + if (!isStatic(field.getModifiers())) + cloningFields.add(field); + + if (!cloningFields.isEmpty()) { + clone0.add(builder().a(clsName).a(" _clone = (").a(clsName).a(")_msg;").toString()); + clone0.add(EMPTY); + + for (Field field : cloningFields) { + String name = field.getName(); + Class<?> type = field.getType(); + + String res = name; + + if (BASE_CLS.isAssignableFrom(type)) + res = name + " != null ? (" + type.getSimpleName() + ")" + name + ".clone() : null"; + + clone0.add(builder().a("_clone.").a(name).a(" = ").a(res).a(";").toString()); + } + } + + start(write, hasSuper ? "writeTo" : null, true); + start(read, hasSuper ? "readFrom" : null, false); + + indent++; + + int state = startState(cls); + + for (Field field : fields) + processField(field, state++); + + indent--; + + finish(write); + finish(read); + } + + /** + * @param cls Message class. + * @return Start state. + */ + private int startState(Class<?> cls) { + assert cls != null; + + Class<?> superCls = cls.getSuperclass(); + + Integer state = fieldCnt.get(superCls); + + if (state != null) + return state; + + state = 0; + + while (cls.getSuperclass() != BASE_CLS) { + cls = cls.getSuperclass(); + + for (Field field : cls.getDeclaredFields()) { + int mod = field.getModifiers(); + + if (!isStatic(mod) && !isTransient(mod) && !field.isAnnotationPresent(GridDirectTransient.class)) + state++; + } + } + + fieldCnt.put(superCls, state); + + return state; + } + + /** + * @param code Code lines. + * @param superMtd Super class method name. + * @param writeType Whether to write message type. + */ + private void start(Collection<String> code, @Nullable String superMtd, boolean writeType) { + assert code != null; + + code.add(builder().a(COMM_STATE_VAR).a(".setBuffer(").a(BUF_VAR).a(");").toString()); + code.add(EMPTY); + + if (superMtd != null) { + returnFalseIfFailed(code, "super." + superMtd, BUF_VAR); + + code.add(EMPTY); + } + + if (writeType) { + code.add(builder().a("if (!").a(TYPE_WRITTEN_VAR).a(") {").toString()); + + indent++; + + returnFalseIfFailed(code, COMM_STATE_VAR + ".putByte", "null", "directType()"); + + code.add(EMPTY); + code.add(builder().a(TYPE_WRITTEN_VAR).a(" = true;").toString()); + + indent--; + + code.add(builder().a("}").toString()); + code.add(EMPTY); + } + + if (!fields.isEmpty()) + code.add(builder().a("switch (").a(STATE_VAR).a(") {").toString()); + } + + /** + * @param code Code lines. + */ + private void finish(Collection<String> code) { + assert code != null; + + if (!fields.isEmpty()) { + code.add(builder().a("}").toString()); + code.add(EMPTY); + } + + code.add(builder().a("return true;").toString()); + } + + /** + * @param field Field. + * @param opt Case option. + */ + private void processField(Field field, int opt) { + assert field != null; + assert opt >= 0; + + GridDirectCollection colAnn = field.getAnnotation(GridDirectCollection.class); + GridDirectMap mapAnn = field.getAnnotation(GridDirectMap.class); + + if (colAnn == null && Collection.class.isAssignableFrom(field.getType())) + throw new IllegalStateException("@GridDirectCollection annotation is not provided for field: " + + field.getName()); + + if (mapAnn == null && Map.class.isAssignableFrom(field.getType())) + throw new IllegalStateException("@GridDirectMap annotation is not provided for field: " + field.getName()); + + writeField(field, opt, colAnn, mapAnn); + readField(field, opt, colAnn, mapAnn); + } + + /** + * @param field Field. + * @param opt Case option. + * @param colAnn Collection annotation. + * @param mapAnn Map annotation. + */ + private void writeField(Field field, int opt, @Nullable GridDirectCollection colAnn, + @Nullable GridDirectMap mapAnn) { + assert field != null; + assert opt >= 0; + + write.add(builder().a("case ").a(opt).a(":").toString()); + + indent++; + + returnFalseIfWriteFailed(field.getType(), field.getName(), colAnn != null ? colAnn.value() : null, + mapAnn != null ? mapAnn.keyType() : null, mapAnn != null ? mapAnn.valueType() : null, false); + + write.add(EMPTY); + write.add(builder().a(STATE_VAR).a("++;").toString()); + write.add(EMPTY); + + indent--; + } + + /** + * @param field Field. + * @param opt Case option. + * @param colAnn Collection annotation. + * @param mapAnn Map annotation. + */ + private void readField(Field field, int opt, @Nullable GridDirectCollection colAnn, + @Nullable GridDirectMap mapAnn) { + assert field != null; + assert opt >= 0; + + read.add(builder().a("case ").a(opt).a(":").toString()); + + indent++; + + returnFalseIfReadFailed(field.getType(), field.getName(), colAnn != null ? colAnn.value() : null, + mapAnn != null ? mapAnn.keyType() : null, mapAnn != null ? mapAnn.valueType() : null, false); + + read.add(EMPTY); + read.add(builder().a(STATE_VAR).a("++;").toString()); + read.add(EMPTY); + + indent--; + } + + /** + * @param type Field type. + * @param name Field name. + * @param colItemType Collection item type. + * @param mapKeyType Map key type. + * @param mapValType Map key value. + * @param raw Raw write flag. + */ + private void returnFalseIfWriteFailed(Class<?> type, String name, @Nullable Class<?> colItemType, + @Nullable Class<?> mapKeyType, @Nullable Class<?> mapValType, boolean raw) { + assert type != null; + assert name != null; + + String field = raw ? "null" : '"' + name + '"'; + + if (type == byte.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putByte", field, name); + else if (type == short.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putShort", field, name); + else if (type == int.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putInt", field, name); + else if (type == long.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putLong", field, name); + else if (type == float.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putFloat", field, name); + else if (type == double.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putDouble", field, name); + else if (type == char.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putChar", field, name); + else if (type == boolean.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putBoolean", field, name); + else if (type == byte[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putByteArray", field, name); + else if (type == short[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putShortArray", field, name); + else if (type == int[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putIntArray", field, name); + else if (type == long[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putLongArray", field, name); + else if (type == float[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putFloatArray", field, name); + else if (type == double[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putDoubleArray", field, name); + else if (type == char[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putCharArray", field, name); + else if (type == boolean[].class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putBooleanArray", field, name); + else if (type == UUID.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putUuid", field, name); + else if (type == ByteBuffer.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putByteBuffer", field, name); + else if (type == IgniteUuid.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putGridUuid", field, name); + else if (type == GridClockDeltaVersion.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putClockDeltaVersion", field, name); + else if (type == GridByteArrayList.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putByteArrayList", field, name); + else if (type == GridLongList.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putLongList", field, name); + else if (type == GridCacheVersion.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putCacheVersion", field, name); + else if (type == GridDhtPartitionExchangeId.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putDhtPartitionExchangeId", field, name); + else if (type == GridCacheValueBytes.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putValueBytes", field, name); + //else if (type == GridDrInternalRequestEntry.class) + // returnFalseIfFailed(write, COMM_STATE_VAR + ".putDrInternalRequestEntry", field, name); + else if (type == String.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putString", field, name); + else if (type == BitSet.class) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putBitSet", field, name); + else if (type.isEnum()) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putEnum", field, name); + else if (BASE_CLS.isAssignableFrom(type)) + returnFalseIfFailed(write, COMM_STATE_VAR + ".putMessage", field, name); + else if (type.isArray() || Collection.class.isAssignableFrom(type)) { + boolean isArr = type.isArray(); + + if (isArr) + colItemType = type.getComponentType(); + + assert colItemType != null; + + write.add(builder().a("if (").a(name).a(" != null) {").toString()); + + indent++; + + write.add(builder().a("if (").a(IT_VAR).a(" == null) {").toString()); + + indent++; + + returnFalseIfFailed(write, COMM_STATE_VAR + ".putInt", "null", name + "." + (isArr ? "length" : "size()")); + + write.add(EMPTY); + write.add(builder().a(IT_VAR).a(" = ").a(isArr ? "arrayIterator(" + name + ")" : name + ".iterator()"). + a(";").toString()); + + indent--; + + write.add(builder().a("}").toString()); + write.add(EMPTY); + write.add(builder().a("while (").a(IT_VAR).a(".hasNext() || ").a(CUR_VAR).a(" != NULL").a(") {"). + toString()); + + indent++; + + write.add(builder().a("if (").a(CUR_VAR).a(" == NULL)").toString()); + + indent++; + + write.add(builder().a(CUR_VAR).a(" = ").a(IT_VAR).a(".next();").toString()); + + indent--; + + write.add(EMPTY); + + returnFalseIfWriteFailed(colItemType, "(" + colItemType.getSimpleName() + ")" + CUR_VAR, + null, null, null, true); + + write.add(EMPTY); + write.add(builder().a(CUR_VAR).a(" = NULL;").toString()); + + indent--; + + write.add(builder().a("}").toString()); + write.add(EMPTY); + write.add(builder().a(IT_VAR).a(" = null;").toString()); + + indent--; + + write.add(builder().a("} else {").toString()); + + indent++; + + returnFalseIfFailed(write, COMM_STATE_VAR + ".putInt", "null", "-1"); + + indent--; + + write.add(builder().a("}").toString()); + } + else if (Map.class.isAssignableFrom(type)) { + assert mapKeyType != null; + assert mapValType != null; + + write.add(builder().a("if (").a(name).a(" != null) {").toString()); + + indent++; + + write.add(builder().a("if (").a(IT_VAR).a(" == null) {").toString()); + + indent++; + + returnFalseIfFailed(write, COMM_STATE_VAR + ".putInt", "null", name + ".size()"); + + write.add(EMPTY); + write.add(builder().a(IT_VAR).a(" = ").a(name).a(".entrySet().iterator();").toString()); + + indent--; + + write.add(builder().a("}").toString()); + write.add(EMPTY); + write.add(builder().a("while (").a(IT_VAR).a(".hasNext() || ").a(CUR_VAR).a(" != NULL").a(") {"). + toString()); + + indent++; + + write.add(builder().a("if (").a(CUR_VAR).a(" == NULL)").toString()); + + indent++; + + write.add(builder().a(CUR_VAR).a(" = ").a(IT_VAR).a(".next();").toString()); + + indent--; + + String entryType = "Map.Entry<" + U.box(mapKeyType).getSimpleName() + ", " + + U.box(mapValType).getSimpleName() + ">"; + + write.add(EMPTY); + write.add(builder().a(entryType).a(" e = (").a(entryType).a(")").a(CUR_VAR).a(";").toString()); + write.add(EMPTY); + write.add(builder().a("if (!").a(KEY_DONE_VAR).a(") {").toString()); + + indent++; + + returnFalseIfWriteFailed(mapKeyType, "e.getKey()", null, null, null, true); + + write.add(EMPTY); + write.add(builder().a(KEY_DONE_VAR).a(" = true;").toString()); + + indent--; + + write.add(builder().a("}").toString()); + write.add(EMPTY); + + returnFalseIfWriteFailed(mapValType, "e.getValue()", null, null, null, true); + + write.add(EMPTY); + write.add(builder().a(KEY_DONE_VAR).a(" = false;").toString()); + write.add(EMPTY); + write.add(builder().a(CUR_VAR).a(" = NULL;").toString()); + + indent--; + + write.add(builder().a("}").toString()); + write.add(EMPTY); + write.add(builder().a(IT_VAR).a(" = null;").toString()); + + indent--; + + write.add(builder().a("} else {").toString()); + + indent++; + + returnFalseIfFailed(write, COMM_STATE_VAR + ".putInt", "null", "-1"); + + indent--; + + write.add(builder().a("}").toString()); + } + else + throw new IllegalStateException("Unsupported type: " + type); + } + + /** + * @param type Field type. + * @param name Field name. + * @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) { + assert type != null; + + String field = raw ? "null" : '"' + name + '"'; + + String retType = type.getSimpleName(); + + if (type == byte.class) + returnFalseIfReadFailed("byte", name, null, COMM_STATE_VAR + ".getByte", field, false); + else if (type == short.class) + returnFalseIfReadFailed("short", name, null, COMM_STATE_VAR + ".getShort", field, false); + else if (type == int.class) + returnFalseIfReadFailed("int", name, null, COMM_STATE_VAR + ".getInt", field, false); + else if (type == long.class) + returnFalseIfReadFailed("long", name, null, COMM_STATE_VAR + ".getLong", field, false); + else if (type == float.class) + returnFalseIfReadFailed("float", name, null, COMM_STATE_VAR + ".getFloat", field, false); + else if (type == double.class) + returnFalseIfReadFailed("double", name, null, COMM_STATE_VAR + ".getDouble", field, false); + else if (type == char.class) + returnFalseIfReadFailed("char", name, null, COMM_STATE_VAR + ".getChar", field, false); + else if (type == boolean.class) + returnFalseIfReadFailed("boolean", name, null, COMM_STATE_VAR + ".getBoolean", field, false); + else if (type == byte[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getByteArray", field, false); + else if (type == short[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getShortArray", field, false); + else if (type == int[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getIntArray", field, false); + else if (type == long[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getLongArray", field, false); + else if (type == float[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getFloatArray", field, false); + else if (type == double[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getDoubleArray", field, false); + else if (type == char[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getCharArray", field, false); + else if (type == boolean[].class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getBooleanArray", field, false); + else if (type == UUID.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getUuid", field, false); + else if (type == ByteBuffer.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getByteBuffer", field, false); + else if (type == IgniteUuid.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getGridUuid", field, false); + else if (type == GridClockDeltaVersion.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getClockDeltaVersion", field, false); + else if (type == GridLongList.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getLongList", field, false); + else if (type == GridByteArrayList.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getByteArrayList", field, false); + else if (type == GridCacheVersion.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getCacheVersion", field, false); + else if (type == GridDhtPartitionExchangeId.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getDhtPartitionExchangeId", field, false); + else if (type == GridCacheValueBytes.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getValueBytes", field, false); + //else if (type == GridDrInternalRequestEntry.class) + // returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getDrInternalRequestEntry", field, false); + else if (type == String.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getString", field, false); + else if (type == BitSet.class) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getBitSet", field, false); + else if (type.isEnum()) { + assert name != null; + + returnFalseIfReadFailed("byte", null, name + "0", COMM_STATE_VAR + ".getByte", field, false); + + read.add(EMPTY); + read.add(builder().a(name).a(" = ").a(type.getSimpleName()).a(".fromOrdinal(").a(name).a("0);").toString()); + } + else if (BASE_CLS.isAssignableFrom(type)) + returnFalseIfReadFailed(retType, name, null, COMM_STATE_VAR + ".getMessage", field, true); + else if (type.isArray() || Collection.class.isAssignableFrom(type)) { + assert name != null; + + boolean isArr = type.isArray(); + + if (isArr) + colItemType = type.getComponentType(); + + assert colItemType != null; + + Class<?> colType = Set.class.isAssignableFrom(type) ? HashSet.class : ArrayList.class; + + read.add(builder().a("if (").a(READ_SIZE_VAR).a(" == -1) {").toString()); + + indent++; + + returnFalseIfReadFailed(int.class, READ_SIZE_VAR, null, null, null, true); + + indent--; + + read.add(builder().a("}").toString()); + read.add(EMPTY); + read.add(builder().a("if (").a(READ_SIZE_VAR).a(" >= 0) {").toString()); + + indent++; + + read.add(builder().a("if (").a(name).a(" == null)").toString()); + + indent++; + + if (isArr) { + String val = colItemType.isArray() ? + colItemType.getComponentType().getSimpleName() + "[" + READ_SIZE_VAR + "][]" : + colItemType.getSimpleName() + "[" + READ_SIZE_VAR + "]"; + + read.add(builder().a(name).a(" = new ").a(val).a(";"). + toString()); + } + else { + read.add(builder().a(name).a(" = new ").a(colType.getSimpleName()).a("<>(").a(READ_SIZE_VAR).a(");"). + toString()); + } + + indent--; + + read.add(EMPTY); + read.add(builder().a("for (int i = ").a(READ_ITEMS_VAR).a("; i < ").a(READ_SIZE_VAR).a("; i++) {"). + toString()); + + indent++; + + String var = colItemType.isPrimitive() ? colItemType.getSimpleName() + " " + DFLT_LOC_VAR : null; + + returnFalseIfReadFailed(colItemType, var, null, null, null, true); + + read.add(EMPTY); + read.add(builder().a(name).a(isArr ? "[i] = " : ".add(").a("(").a(U.box(colItemType).getSimpleName()). + a(")").a(DFLT_LOC_VAR).a(isArr ? ";" : ");").toString()); + read.add(EMPTY); + read.add(builder().a(READ_ITEMS_VAR).a("++;").toString()); + + indent--; + + read.add(builder().a("}").toString()); + + indent--; + + read.add(builder().a("}").toString()); + read.add(EMPTY); + read.add(builder().a(READ_SIZE_VAR).a(" = -1;").toString()); + read.add(builder().a(READ_ITEMS_VAR).a(" = 0;").toString()); + } + else if (Map.class.isAssignableFrom(type)) { + assert name != null; + assert mapKeyType != null; + assert mapValType != null; + + Class<?> mapType = LinkedHashMap.class.isAssignableFrom(type) ? LinkedHashMap.class : HashMap.class; + + read.add(builder().a("if (").a(READ_SIZE_VAR).a(" == -1) {").toString()); + + indent++; + + returnFalseIfReadFailed(int.class, READ_SIZE_VAR, null, null, null, true); + + indent--; + + read.add(builder().a("}").toString()); + read.add(EMPTY); + read.add(builder().a("if (").a(READ_SIZE_VAR).a(" >= 0) {").toString()); + + indent++; + + read.add(builder().a("if (").a(name).a(" == null)").toString()); + + indent++; + + read.add(builder().a(name).a(" = new ").a(mapType.getSimpleName()).a("<>(").a(READ_SIZE_VAR).a(", 1.0f);"). + toString()); + + indent--; + + read.add(EMPTY); + read.add(builder().a("for (int i = ").a(READ_ITEMS_VAR).a("; i < ").a(READ_SIZE_VAR).a("; i++) {"). + toString()); + + indent++; + + read.add(builder().a("if (!").a(KEY_DONE_VAR).a(") {").toString()); + + indent++; + + String var = mapKeyType.isPrimitive() ? mapKeyType.getSimpleName() + " " + DFLT_LOC_VAR : null; + + returnFalseIfReadFailed(mapKeyType, var, null, null, null, true); + + read.add(EMPTY); + read.add(builder().a(CUR_VAR).a(" = ").a(DFLT_LOC_VAR).a(";").toString()); + read.add(builder().a(KEY_DONE_VAR).a(" = true;").toString()); + + indent--; + + read.add(builder().a("}").toString()); + read.add(EMPTY); + + var = mapValType.isPrimitive() ? mapValType.getSimpleName() + " " + DFLT_LOC_VAR : null; + + returnFalseIfReadFailed(mapValType, var, null, null, null, true); + + read.add(EMPTY); + read.add(builder().a(name).a(".put((").a(U.box(mapKeyType).getSimpleName()).a(")").a(CUR_VAR). + a(", ").a(DFLT_LOC_VAR).a(");").toString()); + read.add(EMPTY); + read.add(builder().a(KEY_DONE_VAR).a(" = false;").toString()); + read.add(EMPTY); + read.add(builder().a(READ_ITEMS_VAR).a("++;").toString()); + + indent--; + + read.add(builder().a("}").toString()); + + indent--; + + read.add(builder().a("}").toString()); + read.add(EMPTY); + read.add(builder().a(READ_SIZE_VAR).a(" = -1;").toString()); + read.add(builder().a(READ_ITEMS_VAR).a(" = 0;").toString()); + read.add(builder().a(CUR_VAR).a(" = null;").toString()); + } + else + throw new IllegalStateException("Unsupported type: " + type); + } + + /** + * @param retType Return type. + * @param var Variable name. + * @param locVar Local variable name. + * @param mtd Method name. + * @param arg Method argument. + * @param cast Whether cast is needed. + */ + private void returnFalseIfReadFailed(String retType, @Nullable String var, @Nullable String locVar, String mtd, + @Nullable String arg, boolean cast) { + assert retType != null; + assert mtd != null; + + if (var == null) + var = retType + " " + (locVar != null ? locVar : DFLT_LOC_VAR); + + read.add(builder().a(var).a(" = ").a(cast ? "(" + retType + ")" : "").a(mtd). + a(arg != null ? "(" + arg + ");" : "();").toString()); + read.add(EMPTY); + + read.add(builder().a("if (!").a(COMM_STATE_VAR).a(".lastRead())").toString()); + + indent++; + + read.add(builder().a("return false;").toString()); + + indent--; + } + + /** + * @param code Code lines. + * @param accessor Field or method name. + * @param args Method arguments. + */ + private void returnFalseIfFailed(Collection<String> code, String accessor, @Nullable String... args) { + assert code != null; + assert accessor != null; + + String argsStr = ""; + + if (args != null && args.length > 0) { + for (String arg : args) + argsStr += arg + ", "; + + argsStr = argsStr.substring(0, argsStr.length() - 2); + } + + code.add(builder().a("if (!").a(accessor).a("(" + argsStr + ")").a(")").toString()); + + indent++; + + code.add(builder().a("return false;").toString()); + + indent--; + } + + /** + * Creates new builder with correct indent. + * + * @return Builder. + */ + private SB builder() { + assert indent > 0; + + SB sb = new SB(); + + for (int i = 0; i < indent; i++) + sb.a(TAB); + + return sb; + } + + /** + * Gets all direct marshallable classes. + * First classes will be classes from {@code classesOrder} with same order + * as ordered values. Other classes will be at the end and ordered by name + * (with package prefix). + * That orders need for saving {@code directType} value. + * + * @return Classes. + * @throws Exception In case of error. + */ + private Collection<Class<? extends GridTcpCommunicationMessageAdapter>> classes() throws Exception { + Collection<Class<? extends GridTcpCommunicationMessageAdapter>> col = new TreeSet<>( + new Comparator<Class<? extends GridTcpCommunicationMessageAdapter>>() { + @Override public int compare(Class<? extends GridTcpCommunicationMessageAdapter> c1, + Class<? extends GridTcpCommunicationMessageAdapter> c2) { + return c1.getName().compareTo(c2.getName()); + } + }); + + URLClassLoader ldr = (URLClassLoader)getClass().getClassLoader(); + + for (URL url : ldr.getURLs()) { + File file = new File(url.toURI()); + + int prefixLen = file.getPath().length() + 1; + + processFile(file, ldr, prefixLen, col); + } + + return col; + } + + /** + * Recursively process provided file or directory. + * + * @param file File. + * @param ldr Class loader. + * @param prefixLen Path prefix length. + * @param col Classes. + * @throws Exception In case of error. + */ + private void processFile(File file, ClassLoader ldr, int prefixLen, + Collection<Class<? extends GridTcpCommunicationMessageAdapter>> col) throws Exception { + assert file != null; + assert ldr != null; + assert prefixLen > 0; + assert col != null; + + if (!file.exists()) + throw new FileNotFoundException("File doesn't exist: " + file); + + if (file.isDirectory()) { + for (File f : file.listFiles()) + processFile(f, ldr, prefixLen, col); + } + else { + assert file.isFile(); + + String path = file.getPath(); + + if (path.endsWith(".class")) { + String clsName = path.substring(prefixLen, path.length() - 6).replace(File.separatorChar, '.'); + + Class<?> cls = Class.forName(clsName, false, ldr); + + if (cls.getDeclaringClass() == null && cls.getEnclosingClass() == null && + !BASE_CLS.equals(cls) && BASE_CLS.isAssignableFrom(cls)) + col.add((Class<? extends GridTcpCommunicationMessageAdapter>)cls); + } + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b9ef466/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java index d284749..20e4597 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridJobExecuteRequest.java @@ -456,202 +456,202 @@ public class GridJobExecuteRequest extends GridTcpCommunicationMessageAdapter im /** {@inheritDoc} */ @SuppressWarnings("all") @Override public boolean writeTo(ByteBuffer buf) { - commState.setBuffer(buf); - - if (!commState.typeWritten) { - if (!commState.putByte(null, directType())) - return false; - - commState.typeWritten = true; - } - - switch (commState.idx) { - case 0: - if (!commState.putGridUuid("clsLdrId", clsLdrId)) - return false; - - commState.idx++; - - case 1: - if (!commState.putString("cpSpi", cpSpi)) - return false; - - commState.idx++; - - case 2: - if (!commState.putLong("createTime", createTime)) - return false; - - commState.idx++; - - case 3: - if (!commState.putEnum("depMode", depMode)) - return false; - - commState.idx++; - - case 4: - if (!commState.putBoolean("dynamicSiblings", dynamicSiblings)) - return false; - - commState.idx++; - - case 5: - if (!commState.putBoolean("forceLocDep", forceLocDep)) - return false; - - commState.idx++; - - case 6: - if (!commState.putBoolean("internal", internal)) - return false; - - commState.idx++; - - case 7: - if (!commState.putByteArray("jobAttrsBytes", jobAttrsBytes)) - return false; - - commState.idx++; - - case 8: - if (!commState.putByteArray("jobBytes", jobBytes)) - return false; - - commState.idx++; - - case 9: - if (!commState.putGridUuid("jobId", jobId)) - return false; - - commState.idx++; - - case 9: - if (ldrParticipants != null) { - if (commState.it == null) { - if (!commState.putInt(null, ldrParticipants.size())) - return false; - - commState.it = ldrParticipants.entrySet().iterator(); - } - - while (commState.it.hasNext() || commState.cur != NULL) { - if (commState.cur == NULL) - commState.cur = commState.it.next(); - - Map.Entry<UUID, IgniteUuid> e = (Map.Entry<UUID, IgniteUuid>)commState.cur; - - if (!commState.keyDone) { - if (!commState.putUuid(null, e.getKey())) - return false; - - commState.keyDone = true; - } - - if (!commState.putGridUuid(null, e.getValue())) - return false; - - commState.keyDone = false; - - commState.cur = NULL; - } - - commState.it = null; - } else { - if (!commState.putInt(null, -1)) - return false; - } - - commState.idx++; - - case 11: - if (!commState.putByteArray("sesAttrsBytes", sesAttrsBytes)) - return false; - - commState.idx++; - - case 12: - if (!commState.putBoolean(sesFullSup)) - return false; - - commState.idx++; - - case 13: - if (!commState.putGridUuid("sesId", sesId)) - return false; - - commState.idx++; - - case 14: - if (!commState.putByteArray("siblingsBytes", siblingsBytes)) - return false; - - commState.idx++; - - case 15: - if (!commState.putLong("startTaskTime", startTaskTime)) - return false; - - commState.idx++; - - case 16: - if (!commState.putUuid("subjId", subjId)) - return false; - - commState.idx++; - - case 17: - if (!commState.putString("taskClsName", taskClsName)) - return false; - - commState.idx++; - - case 18: - if (!commState.putString("taskName", taskName)) - return false; - - commState.idx++; - - case 19: - if (!commState.putLong("timeout", timeout)) - return false; - - commState.idx++; - - case 19: - if (top != null) { - if (commState.it == null) { - if (!commState.putInt(null, top.size())) - return false; - - commState.it = top.iterator(); - } - - while (commState.it.hasNext() || commState.cur != NULL) { - if (commState.cur == NULL) - commState.cur = commState.it.next(); - - if (!commState.putUuid(null, (UUID)commState.cur)) - return false; - - commState.cur = NULL; - } - - commState.it = null; - } else { - if (!commState.putInt(null, -1)) - return false; - } - - commState.idx++; - - case 21: - if (!commState.putString("userVer", userVer)) - return false; - - commState.idx++; - - } +// commState.setBuffer(buf); +// +// if (!commState.typeWritten) { +// if (!commState.putByte(null, directType())) +// return false; +// +// commState.typeWritten = true; +// } +// +// switch (commState.idx) { +// case 0: +// if (!commState.putGridUuid("clsLdrId", clsLdrId)) +// return false; +// +// commState.idx++; +// +// case 1: +// if (!commState.putString("cpSpi", cpSpi)) +// return false; +// +// commState.idx++; +// +// case 2: +// if (!commState.putLong("createTime", createTime)) +// return false; +// +// commState.idx++; +// +// case 3: +// if (!commState.putEnum("depMode", depMode)) +// return false; +// +// commState.idx++; +// +// case 4: +// if (!commState.putBoolean("dynamicSiblings", dynamicSiblings)) +// return false; +// +// commState.idx++; +// +// case 5: +// if (!commState.putBoolean("forceLocDep", forceLocDep)) +// return false; +// +// commState.idx++; +// +// case 6: +// if (!commState.putBoolean("internal", internal)) +// return false; +// +// commState.idx++; +// +// case 7: +// if (!commState.putByteArray("jobAttrsBytes", jobAttrsBytes)) +// return false; +// +// commState.idx++; +// +// case 8: +// if (!commState.putByteArray("jobBytes", jobBytes)) +// return false; +// +// commState.idx++; +// +// case 9: +// if (!commState.putGridUuid("jobId", jobId)) +// return false; +// +// commState.idx++; +// +// case 9: +// if (ldrParticipants != null) { +// if (commState.it == null) { +// if (!commState.putInt(null, ldrParticipants.size())) +// return false; +// +// commState.it = ldrParticipants.entrySet().iterator(); +// } +// +// while (commState.it.hasNext() || commState.cur != NULL) { +// if (commState.cur == NULL) +// commState.cur = commState.it.next(); +// +// Map.Entry<UUID, IgniteUuid> e = (Map.Entry<UUID, IgniteUuid>)commState.cur; +// +// if (!commState.keyDone) { +// if (!commState.putUuid(null, e.getKey())) +// return false; +// +// commState.keyDone = true; +// } +// +// if (!commState.putGridUuid(null, e.getValue())) +// return false; +// +// commState.keyDone = false; +// +// commState.cur = NULL; +// } +// +// commState.it = null; +// } else { +// if (!commState.putInt(null, -1)) +// return false; +// } +// +// commState.idx++; +// +// case 11: +// if (!commState.putByteArray("sesAttrsBytes", sesAttrsBytes)) +// return false; +// +// commState.idx++; +// +// case 12: +// if (!commState.putBoolean(sesFullSup)) +// return false; +// +// commState.idx++; +// +// case 13: +// if (!commState.putGridUuid("sesId", sesId)) +// return false; +// +// commState.idx++; +// +// case 14: +// if (!commState.putByteArray("siblingsBytes", siblingsBytes)) +// return false; +// +// commState.idx++; +// +// case 15: +// if (!commState.putLong("startTaskTime", startTaskTime)) +// return false; +// +// commState.idx++; +// +// case 16: +// if (!commState.putUuid("subjId", subjId)) +// return false; +// +// commState.idx++; +// +// case 17: +// if (!commState.putString("taskClsName", taskClsName)) +// return false; +// +// commState.idx++; +// +// case 18: +// if (!commState.putString("taskName", taskName)) +// return false; +// +// commState.idx++; +// +// case 19: +// if (!commState.putLong("timeout", timeout)) +// return false; +// +// commState.idx++; +// +// case 19: +// if (top != null) { +// if (commState.it == null) { +// if (!commState.putInt(null, top.size())) +// return false; +// +// commState.it = top.iterator(); +// } +// +// while (commState.it.hasNext() || commState.cur != NULL) { +// if (commState.cur == NULL) +// commState.cur = commState.it.next(); +// +// if (!commState.putUuid(null, (UUID)commState.cur)) +// return false; +// +// commState.cur = NULL; +// } +// +// commState.it = null; +// } else { +// if (!commState.putInt(null, -1)) +// return false; +// } +// +// commState.idx++; +// +// case 21: +// if (!commState.putString("userVer", userVer)) +// return false; +// +// commState.idx++; +// +// } return true; } @@ -659,243 +659,243 @@ public class GridJobExecuteRequest extends GridTcpCommunicationMessageAdapter im /** {@inheritDoc} */ @SuppressWarnings("all") @Override public boolean readFrom(ByteBuffer buf) { - commState.setBuffer(buf); - - switch (commState.idx) { - case 0: - clsLdrId = commState.getGridUuid("clsLdrId"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 1: - cpSpi = commState.getString("cpSpi"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 2: - createTime = commState.getLong("createTime"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 3: - byte depMode0 = commState.getByte("depMode"); - - if (!commState.lastRead()) - return false; - - depMode = IgniteDeploymentMode.fromOrdinal(depMode0); - - commState.idx++; - - case 4: - dynamicSiblings = commState.getBoolean("dynamicSiblings"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 5: - forceLocDep = commState.getBoolean("forceLocDep"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 6: - internal = commState.getBoolean("internal"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 7: - jobAttrsBytes = commState.getByteArray("jobAttrsBytes"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 8: - jobBytes = commState.getByteArray("jobBytes"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 9: - jobId = commState.getGridUuid("jobId"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 9: - if (commState.readSize == -1) { - commState.readSize = commState.getInt(null); - - if (!commState.lastRead()) - return false; - } - - if (commState.readSize >= 0) { - if (ldrParticipants == null) - ldrParticipants = new HashMap<>(commState.readSize, 1.0f); - - for (int i = commState.readItems; i < commState.readSize; i++) { - if (!commState.keyDone) { - UUID _val = commState.getUuid(null); - - if (!commState.lastRead()) - return false; - - commState.cur = _val; - commState.keyDone = true; - } - - IgniteUuid _val = commState.getGridUuid(null); - - if (!commState.lastRead()) - return false; - - ldrParticipants.put((UUID)commState.cur, _val); - - commState.keyDone = false; - - commState.readItems++; - } - } - - commState.readSize = -1; - commState.readItems = 0; - commState.cur = null; - - commState.idx++; - - case 11: - sesAttrsBytes = commState.getByteArray("sesAttrsBytes"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 12: - sesFullSup = commState.getBoolean("sesFullSup"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 13: - sesId = commState.getGridUuid("sesId"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 14: - siblingsBytes = commState.getByteArray("siblingsBytes"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 15: - startTaskTime = commState.getLong("startTaskTime"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 16: - subjId = commState.getUuid("subjId"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 17: - taskClsName = commState.getString("taskClsName"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 18: - taskName = commState.getString("taskName"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 19: - timeout = commState.getLong("timeout"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - case 19: - if (commState.readSize == -1) { - commState.readSize = commState.getInt(null); - - if (!commState.lastRead()) - return false; - } - - if (commState.readSize >= 0) { - if (top == null) - top = new ArrayList<>(commState.readSize); - - for (int i = commState.readItems; i < commState.readSize; i++) { - UUID _val = commState.getUuid(null); - - if (!commState.lastRead()) - return false; - - top.add((UUID)_val); - - commState.readItems++; - } - } - - commState.readSize = -1; - commState.readItems = 0; - - commState.idx++; - - case 21: - userVer = commState.getString("userVer"); - - if (!commState.lastRead()) - return false; - - commState.idx++; - - } +// commState.setBuffer(buf); +// +// switch (commState.idx) { +// case 0: +// clsLdrId = commState.getGridUuid("clsLdrId"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 1: +// cpSpi = commState.getString("cpSpi"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 2: +// createTime = commState.getLong("createTime"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 3: +// byte depMode0 = commState.getByte("depMode"); +// +// if (!commState.lastRead()) +// return false; +// +// depMode = IgniteDeploymentMode.fromOrdinal(depMode0); +// +// commState.idx++; +// +// case 4: +// dynamicSiblings = commState.getBoolean("dynamicSiblings"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 5: +// forceLocDep = commState.getBoolean("forceLocDep"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 6: +// internal = commState.getBoolean("internal"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 7: +// jobAttrsBytes = commState.getByteArray("jobAttrsBytes"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 8: +// jobBytes = commState.getByteArray("jobBytes"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 9: +// jobId = commState.getGridUuid("jobId"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 9: +// if (commState.readSize == -1) { +// commState.readSize = commState.getInt(null); +// +// if (!commState.lastRead()) +// return false; +// } +// +// if (commState.readSize >= 0) { +// if (ldrParticipants == null) +// ldrParticipants = new HashMap<>(commState.readSize, 1.0f); +// +// for (int i = commState.readItems; i < commState.readSize; i++) { +// if (!commState.keyDone) { +// UUID _val = commState.getUuid(null); +// +// if (!commState.lastRead()) +// return false; +// +// commState.cur = _val; +// commState.keyDone = true; +// } +// +// IgniteUuid _val = commState.getGridUuid(null); +// +// if (!commState.lastRead()) +// return false; +// +// ldrParticipants.put((UUID)commState.cur, _val); +// +// commState.keyDone = false; +// +// commState.readItems++; +// } +// } +// +// commState.readSize = -1; +// commState.readItems = 0; +// commState.cur = null; +// +// commState.idx++; +// +// case 11: +// sesAttrsBytes = commState.getByteArray("sesAttrsBytes"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 12: +// sesFullSup = commState.getBoolean("sesFullSup"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 13: +// sesId = commState.getGridUuid("sesId"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 14: +// siblingsBytes = commState.getByteArray("siblingsBytes"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 15: +// startTaskTime = commState.getLong("startTaskTime"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 16: +// subjId = commState.getUuid("subjId"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 17: +// taskClsName = commState.getString("taskClsName"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 18: +// taskName = commState.getString("taskName"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 19: +// timeout = commState.getLong("timeout"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// case 19: +// if (commState.readSize == -1) { +// commState.readSize = commState.getInt(null); +// +// if (!commState.lastRead()) +// return false; +// } +// +// if (commState.readSize >= 0) { +// if (top == null) +// top = new ArrayList<>(commState.readSize); +// +// for (int i = commState.readItems; i < commState.readSize; i++) { +// UUID _val = commState.getUuid(null); +// +// if (!commState.lastRead()) +// return false; +// +// top.add((UUID)_val); +// +// commState.readItems++; +// } +// } +// +// commState.readSize = -1; +// commState.readItems = 0; +// +// commState.idx++; +// +// case 21: +// userVer = commState.getString("userVer"); +// +// if (!commState.lastRead()) +// return false; +// +// commState.idx++; +// +// } return true; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b9ef466/modules/tools/pom.xml ---------------------------------------------------------------------- diff --git a/modules/tools/pom.xml b/modules/tools/pom.xml index 3a01471..deab202 100644 --- a/modules/tools/pom.xml +++ b/modules/tools/pom.xml @@ -41,12 +41,6 @@ </properties> <dependencies> - <!--<dependency>--> - <!--<groupId>org.apache.ignite</groupId>--> - <!--<artifactId>ignite-core</artifactId>--> - <!--<version>${ignite.version}</version>--> - <!--</dependency>--> - <dependency> <groupId>org.jodd</groupId> <artifactId>jodd-lagarto</artifactId>
