/** * Adds provided class names for marshalling optimization. * <p> * <b>NOTE</b>: these collections of classes must be identical on all nodes and in the same order. * * @param clsNames User preregistered class names to add. */ @SuppressWarnings("unchecked") public void setClassNames(@Nullable List<String> clsNames) { if (clsNames != null && !clsNames.isEmpty()) { String[] clsNamesArr = clsNames.toArray(new String[clsNames.size()]); Arrays.sort(clsNamesArr); Map<String, Integer> name2id = U.newHashMap(clsNamesArr.length); T3<String, Class<?>, GridOptimizedClassDescriptor>[] id2name = new T3[clsNamesArr.length]; int i = 0; for (String name : clsNamesArr) { name2id.put(name, i); id2name[i++] = new T3<>(name, null, null); } GridOptimizedClassResolver.userClasses(name2id, id2name); } }
resKey = new T3<>(qry.queryClassName(), qry.clause(), F.asList(args));