
io.vertx.up.unity.Ux Maven / Gradle / Ivy
package io.vertx.up.unity;
import io.aeon.experiment.rule.RuleTerm;
import io.horizon.atom.common.Kv;
import io.horizon.eon.VString;
import io.horizon.eon.em.typed.ChangeFlag;
import io.horizon.eon.em.secure.AuthWall;
import io.modello.specification.HRecord;
import io.vertx.core.*;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.core.shareddata.ClusterSerializable;
import io.vertx.ext.auth.User;
import io.vertx.ext.web.FileUpload;
import io.vertx.ext.web.RoutingContext;
import io.vertx.tp.plugin.database.DataPool;
import io.vertx.tp.plugin.jooq.JooqDsl;
import io.vertx.tp.plugin.jooq.JooqInfix;
import io.vertx.up.atom.Refer;
import io.vertx.up.atom.query.Pagination;
import io.vertx.up.atom.record.Apt;
import io.vertx.up.atom.secure.AegisItem;
import io.vertx.up.atom.secure.Vis;
import io.vertx.up.atom.worker.Mission;
import io.vertx.up.commune.Envelop;
import io.vertx.up.commune.config.Integration;
import io.vertx.up.commune.exchange.DConsumer;
import io.vertx.up.commune.exchange.DFabric;
import io.vertx.up.commune.exchange.DSetting;
import io.vertx.up.eon.KName;
import io.horizon.exception.WebException;
import io.vertx.up.fn.Fn;
import io.vertx.up.runtime.ZeroYml;
import io.vertx.up.secure.Lee;
import io.vertx.up.secure.LeeBuiltIn;
import io.vertx.up.uca.jooq.UxJoin;
import io.vertx.up.uca.jooq.UxJooq;
import io.vertx.up.util.Ut;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collectors;
/**
* #「Kt」Utility X Component in zero
*
* Here Ux is a util interface of uniform to call different tools.
* It just like helper for business usage.
*/
@SuppressWarnings("all")
public final class Ux {
/**
* Create new log instance for store `Annal` mapping
*
* Debug method for help us to do development
* 1) debug:
* -- debugTc: It will be used in test case
* 2) otherwise:
* 3) dataN/dataO -> New / Old Json
* ( Business Part: Debugging )
*/
public static void debug(final Object... objects) {
Debug.monitor(objects);
}
public static void debugTc(final ClusterSerializable cluster) {
Debug.monitorTc(cluster);
}
public static Future debug(final T item) {
return Debug.debug(item);
}
public static T debug(final Throwable error, final Supplier supplier) {
return Debug.debug(error, supplier);
}
public static Function otherwise() {
return Debug.otherwise();
}
public static Function otherwise(Supplier supplier) {
return Debug.otherwise(supplier);
}
public static Function otherwise(T input) {
return otherwise(() -> input);
}
/*
* Update Data on Record
* 1. Generic T ( Pojo )
* 2. List
* 3. JsonObject
* 4. JsonArray
* 5. Record
* 6. Record[]
*/
public static T cloneT(final T input) {
return Compare.cloneT(input);
}
public static T updateT(final T query, final JsonObject params) {
return Compare.updateT(query, params);
}
public static List updateT(final List query, final JsonArray params) {
return Compare.updateT(query, params, KName.KEY);
}
public static List updateT(final List query, final JsonArray params, final String field) {
return Compare.updateT(query, params, field);
}
public static JsonArray updateJ(final JsonArray query, final JsonArray params) {
return Compare.updateJ(query, params, KName.KEY);
}
public static JsonArray updateJ(final JsonArray query, final JsonArray params, final String field) {
return Compare.updateJ(query, params, field);
}
public static HRecord updateR(final HRecord record, final JsonObject params) {
return Compare.updateR(record, params, () -> UUID.randomUUID().toString());
}
public static HRecord[] updateR(final HRecord[] record, final JsonArray array) {
return updateR(record, array, KName.KEY);
}
public static HRecord[] updateR(final HRecord[] record, final JsonArray array, final String field) {
final List recordList = Arrays.asList(record);
return Compare.updateR(recordList, array, field).toArray(new HRecord[]{});
}
/*
* Rule Match
* 1. single checking
* 2. double checking
* 3. array checking
*/
public static JsonObject ruleAll(final Collection rules, final JsonObject input) {
return Unique.ruleAll(rules, input);
}
public static ConcurrentMap ruleAll(final Collection rules, final JsonArray input) {
return Unique.ruleAll(rules, input);
}
public static JsonObject ruleAll(final Collection rules, final JsonObject recordO, final JsonObject recordN) {
return Unique.ruleAll(rules, recordO, recordN);
}
public static JsonObject ruleAll(final Collection rules, final JsonArray source, final JsonObject record) {
return Unique.ruleAll(rules, source, record);
}
public static JsonObject ruleAny(final Collection rules, final JsonObject input) {
return Unique.ruleAny(rules, input);
}
public static JsonObject ruleAny(final Collection rules, final JsonObject record0, final JsonObject recordN) {
return Unique.ruleAny(rules, record0, recordN);
}
public static JsonObject ruleAny(final Collection rules, final JsonArray source, final JsonObject record) {
return Unique.ruleAny(rules, source, record);
}
public static ConcurrentMap ruleAny(final Collection rules, final JsonArray input) {
return Unique.ruleAny(rules, input);
}
public static JsonObject ruleTwins(final JsonObject recordO, final JsonObject recordN) {
return Unique.ruleTwins(recordO, recordN);
}
public static JsonObject ruleNil(final JsonObject twins, final ChangeFlag flag) {
return Unique.ruleNil(twins, flag);
}
public static JsonObject ruleNil(final JsonObject recordN, final JsonObject recordO) {
return Objects.isNull(recordN) ? recordO : recordN;
}
public static Apt ruleApt(final JsonArray twins, final boolean isReplaced) {
return Unique.ruleApt(twins, isReplaced);
}
// ------------------------- Compare Json ------------------------
/*
* 1) ruleJOk
* 2) ruleJReduce
* 3) ruleJEqual
* 4) ruleJFind
*/
public static boolean ruleJOk(final JsonObject record, final Set fields) {
return CompareJ.ruleJOk(record, fields);
}
public static boolean ruleJOk(final JsonObject record, final JsonArray matrix) {
return CompareJ.ruleJOk(record, matrix);
}
public static JsonArray ruleJReduce(final JsonArray records, final Set fields) {
return CompareJ.ruleJReduce(records, fields);
}
public static JsonArray ruleJReduce(final JsonArray records, final JsonArray matrix) {
return CompareJ.ruleJReduce(records, matrix);
}
public static boolean ruleJEqual(final JsonObject record, final JsonObject latest, final Set fields) {
return CompareJ.ruleJEqual(record, latest, fields);
}
public static boolean ruleJEqual(final JsonObject record, final JsonObject latest, final JsonArray matrix) {
return CompareJ.ruleJEqual(record, latest, matrix);
}
public static JsonObject ruleJFind(final JsonArray source, final JsonObject expected, final Set fields) {
return CompareJ.ruleJFind(source, expected, fields);
}
public static JsonObject ruleJFind(final JsonArray source, final JsonObject expected, final JsonArray matrix) {
return CompareJ.ruleJFind(source, expected, matrix);
}
/*
* Entity ( Pojo ) to JsonObject, support pojo file here
* 1) toJson / fromJson
* 2) toZip: Toggle switch from interface style to worker here, the key should be "0", "1", "2", "3", ....
* 3) toJArray
* ( Business Part, support `pojoFile` conversation )
* 4) toFile
*/
public static JsonObject toJson(final T entity) {
return To.toJObject(entity, "");
}
public static JsonObject toJson(final T entity, final String pojo) {
return To.toJObject(entity, pojo);
}
public static JsonArray toJson(final List list) {
return To.toJArray(list, "");
}
public static JsonArray toJson(final List list, final String pojo) {
return To.toJArray(list, pojo);
}
public static JsonObject toZip(final Object... args) {
return To.toToggle(args);
}
/*
* Analyze the arguments by type
* 1) used by `io.vertx.up.uca.rs.mime.parse.TypedAtomic`.
* 2) used by `io.vertx.up.uca.invoker.InvokerUtil`.
* The arguments are different, but could support more method declare
*/
// Job
public static Object toParameter(final Envelop envelop, final Class> type, final Mission mission, final Refer underway) {
return Web.toParameter(envelop, type, mission, underway);
}
// Worker
public static Object toParameter(final Envelop envelop, final Class> type) {
return Web.toParameter(envelop, type);
}
// Agent
public static Object toParameter(final RoutingContext context, final Class> type) {
return Web.toParameter(context, type);
}
public static T fromJson(final JsonObject data, final Class clazz) {
return From.fromJson(data, clazz, "");
}
public static List fromJson(final JsonArray array, final Class clazz) {
return From.fromJson(array, clazz, "");
}
public static List fromPage(final JsonObject data, final Class clazz) {
return fromJson(pageData(data), clazz);
}
public static T fromJson(final JsonObject data, final Class clazz, final String pojo) {
return From.fromJson(data, clazz, pojo);
}
public static List fromJson(final JsonArray array, final Class clazz, final String pojo) {
return From.fromJson(array, clazz, pojo);
}
/**
* File upload tool to convert data
*
* @param fileUploads Set of file uploads
* @param expected The method declared type
* @param consumer File consumer to read `filename` to Buffer
* @param Returned type for declared
*
* @return T reference that converted
*/
public static T toFile(final Set fileUploads, final Class> expected, final Function consumer) {
return Upload.toFile(fileUploads, expected, consumer);
}
/**
* Single file upload converting
*
* @param fileUpload The `FileUpload` reference
* @param expected The method declared type
* @param consumer File consumer to read `filename` to Buffer
* @param Returned type of declared
*
* @return T reference that converted
*/
public static T toFile(final FileUpload fileUpload, final Class> expected, final Function consumer) {
return Upload.toFile(fileUpload, expected, consumer);
}
/**
* Split `Set` by fieldname
*
* @param fileUploads FileUpload Set
*
* @return Map of `field = Set`
*/
public static ConcurrentMap> toFile(final Set fileUploads) {
return Upload.toFile(fileUploads);
}
/*
* Envelop building here
* 1) envelop: ( Get different Envelop )
* 2) future: ( Wrapper Future.successedFuture / Future.failureFuture ) at same time
* 3) handler: ( Handler> )
* 4) compare: ( Compare two object )
* 5) complex:
* - JsonObject -> condition -> executor
* - JsonArray -> condition -> grouper -> executor
*/
public static Envelop fromEnvelop(final Class extends WebException> clazz, final Object... args) {
return To.toEnvelop(clazz, args);
}
public static Envelop fromEnvelop(final T entity) {
return To.toEnvelop(entity);
}
public static Envelop fromEnvelop(final T entity, final WebException error) {
return To.toEnvelop(entity, error);
}
public static Future fromAsync(final CompletionStage state) {
return Async.fromAsync(state);
}
public static Future future(final T entity) {
return To.future(entity);
}
public static Future future(final T input, final List>> functions) {
return Async.future(input, functions);
}
public static Future future(final T input, final Set>> functions) {
return Async.future(input, functions);
}
public static Future future() {
return To.future(null);
}
public static Future complex(final JsonObject input, final Predicate predicate, final Supplier> executor) {
return Complex.complex(input, predicate, executor);
}
public static Future complex(final Pagination first, final Function> total, final Function> page, final Function> result) {
return Complex.complex(first, total, page, result, JsonArray::addAll);
}
public static Function> complex(final Function> total, final Function> page, final Function> result) {
return Complex.complex(total, page, result);
}
public static Function> complex(final Function> page) {
return complex(data -> To.future(data.getInteger("count")), page, response -> To.future(response.getJsonArray("list")));
}
public static Handler> handler(final Message message) {
return Web.toHandler(message);
}
public static Future handler(final Consumer>> handler) {
return Web.toFuture(handler);
}
/*
* 1) compare
* 2) compareJ
* 3) compareRun
*/
public static ConcurrentMap> compare(final List original, final List current, final Function fnValue, final String pojoFile) {
return Compare.compare(original, current, fnValue, pojoFile);
}
public static ConcurrentMap> compare(final List original, final List current, final Function fnValue) {
return Compare.compare(original, current, fnValue, VString.EMPTY);
}
public static ConcurrentMap> compare(final List original, final List current, final Set uniqueSet, final String pojoFile) {
return Compare.compare(original, current, uniqueSet, pojoFile);
}
public static ConcurrentMap> compare(final List original, final List current, final Set uniqueSet) {
return Compare.compare(original, current, uniqueSet, VString.EMPTY);
}
public static ConcurrentMap compareJ(
final JsonArray original, final JsonArray current, final Set fields) {
return CompareJ.compareJ(original, current, fields);
}
public static ConcurrentMap compareJ(
final JsonArray original, final JsonArray current, final String field) {
return CompareJ.compareJ(original, current, field);
}
public static ConcurrentMap compareJ(
final JsonArray original, final JsonArray current, final JsonArray matrix) {
return CompareJ.compareJ(original, current, matrix);
}
public static Future> compareJAsync(
final JsonArray original, final JsonArray current, final Set fields) {
return To.future(CompareJ.compareJ(original, current, fields));
}
public static Future> compareJAsync(
final JsonArray original, final JsonArray current, final String field) {
return To.future(CompareJ.compareJ(original, current, field));
}
public static Future> compareJAsync(
final JsonArray original, final JsonArray current, final JsonArray matrix) {
return To.future(CompareJ.compareJ(original, current, matrix));
}
public static Future compareRun(final ConcurrentMap> compared, final Function, Future>> insertAsyncFn, final Function, Future>> updateAsyncFn) {
return Compare.run(compared, insertAsyncFn, updateAsyncFn);
}
/*
* future prefix processing here
*
* JsonArray
* 1) futureA
* -- futureA()
* -- futureA(List)
* -- futureA(List, pojo)
* -- futureA(String)
* -- futureA(Record[])
*
* JsonObject
* 2) futureJ
* -- futureJ()
* -- futureJ(T)
* -- futureJ(T, pojo)
* -- futureJ(String)
* -- futureJ(Record)
* -- futureJM(T, String)
*
* List
* 3) futureL
* -- futureL()
* -- futureL(List)
* -- futureL(List, pojo)
* -- futureL(String)
*
* Grouped
* 4) futureG
* -- futureG(List, String)
* -- futureG(T, String)
* -- futureG(List)
* -- futureG(T)
*
* Error Future
* 5) futureE
* -- futureE(T)
* -- futureE(Supplier)
*
* New Api for normalized mount
* 6) futureN
* -- futureN(JsonObject, JsonObject)
* -- futureN(JsonArray, JsonArray)
* -- futureN(JsonArray, JsonArray, String)
* > N for normalize and add new field: __data, __flag instead of original data
*
* Combine JsonObject and JsonArray by index
* 7) futureC
*
* Filter JsonObject and JsonArray
* 8) futureF
* -- futureF(String...)
* -- futureF(Set)
* -- futureF(ClustSerializble, String...)
* -- futureF(JsonArray, String...)
* -- futureF(JsonObject, Set)
* -- futureF(JsonArray, Set)
*/
// ----------------------- futureF ----------------------
public static Function> futureF(final Set removed) {
return input -> (input instanceof JsonObject) ?
futureF((JsonObject) input, removed).compose(json -> To.future((T) json)) :
futureF((JsonArray) input, removed).compose(array -> To.future((T) array));
}
public static Function> futureF(final String... removed) {
return futureF(Arrays.stream(removed).collect(Collectors.toSet()));
}
public static Future futureF(final JsonObject input, final String... removed) {
return To.future(To.subset(input, Arrays.stream(removed).collect(Collectors.toSet())));
}
public static Future futureF(final JsonObject input, final Set removed) {
return To.future(To.subset(input, removed));
}
public static Future futureF(final JsonArray input, final String... removed) {
return To.future(To.subset(input, Arrays.stream(removed).collect(Collectors.toSet())));
}
public static Future futureF(final JsonArray input, final Set removed) {
return To.future(To.subset(input, removed));
}
// ----------------------- futureN ----------------------
public static Future futureN(final JsonObject input, final JsonObject previous, final JsonObject current) {
return Norm.effect(input, previous, current);
}
public static Future futureN(final JsonArray previous, final JsonArray current) {
return Norm.effect(previous, current, KName.KEY);
}
public static Future futureN(final JsonArray previous, final JsonArray current, final String field) {
return Norm.effect(previous, current, field);
}
public static Future futureC(final T input, final T processed) {
return Norm.combine(input, processed);
}
public static Future futureT() {
return To.future(Boolean.TRUE);
}
public static Future futureT(final T input) {
return To.future(Boolean.TRUE);
}
public static Future futureF() {
return To.future(Boolean.FALSE);
}
public static Future> futureL() {
return future(new ArrayList<>());
}
public static Future> futureL(final T single) {
final List list = new ArrayList<>();
list.add(single);
return future(list);
}
public static Function> futureE(final T input) {
return Async.toErrorFuture(() -> input);
}
public static Function> futureE(final Supplier supplier) {
return Async.toErrorFuture(supplier);
}
public static Future futureA(final List list, final String pojo) {
return Future.succeededFuture(To.toJArray(list, pojo));
}
public static Future futureA() {
return futureA(new ArrayList<>(), VString.EMPTY);
}
public static Future futureA(Throwable ex) {
return Async.toErrorFuture(JsonArray::new).apply(ex);
}
public static Future futureA(final List list) {
return futureA(list, VString.EMPTY);
}
public static Function, Future> futureA(final String pojo) {
return list -> futureA(list, pojo);
}
// --------------- T of entity processing -----------------
public static Future futureJ(final T entity, final String pojo) {
return Future.succeededFuture(To.toJObject(entity, pojo));
}
public static Function, Future> futureJM(final T entity, final String field) {
return list -> Future.succeededFuture(To.toMerge(entity, field, list));
}
public static Future futureJ() {
return futureJ(new JsonObject(), VString.EMPTY);
}
public static Future futureJ(Throwable ex) {
return Async.toErrorFuture(JsonObject::new).apply(ex);
}
public static Future futureJ(final T entity) {
return futureJ(entity, VString.EMPTY);
}
public static Function> futureJ(final String pojo) {
return entity -> futureJ(entity, pojo);
}
// --------------- List of future processing -----------------
public static Future> futureL(final List list, final String pojo) {
return Future.succeededFuture(To.toJList(list, pojo));
}
public static Future> futureLJ() {
return futureL(new ArrayList<>(), VString.EMPTY);
}
public static Future> futureL(final List list) {
return futureL(list, VString.EMPTY);
}
public static Function, Future>> futureL(final String pojo) {
return list -> futureL(list, pojo);
}
// --------------- Record processing -----------------
public static Future futureJ(final HRecord record) {
return Fn.runOr(futureJ(), () -> To.future(record.toJson()), record);
}
public static Future futureA(final HRecord[] records) {
return Fn.runOr(futureA(), () -> To.future(Ut.toJArray(records)), records);
}
// --------------- Future of Map -----------------
public static Future> futureG(final List item, final String field) {
return futureG(To.toJArray(item, ""), field);
}
public static Future> futureG(final JsonArray item, final String field) {
return Future.succeededFuture(Ut.elementGroup(item, field));
}
public static Future> futureG(final List item) {
return futureG(To.toJArray(item, ""), "type");
}
public static Future> futureG(final JsonArray item) {
return futureG(item, "type");
}
/*
* Channel Execution
*
* 1. channel
* 2. channelS
* 3. channelA
*/
public static Future channel(final Class clazz, final Supplier supplier,
final Function> executor) {
return Async.channel(clazz, supplier, executor);
}
public static O channelS(final Class clazz, final Supplier supplier,
final Function executor) {
return Async.channelSync(clazz, supplier, executor);
}
public static O channelS(final Class clazz, final Function executor) {
return Async.channelSync(clazz, () -> null, executor);
}
public static Future channelA(final Class clazz, final Supplier> supplier,
final Function> executor) {
return Async.channelAsync(clazz, supplier, executor);
}
/*
* Normalize pageData in framework
* {
* "list": [],
* "count": xx
* }
* Normalize old/new data in framework
*/
public static JsonObject pageData() {
return Web.pageData(new JsonArray(), 0L);
}
public static JsonObject pageData(final JsonArray data, final long size) {
return Web.pageData(data, size);
}
public static JsonArray pageData(final JsonObject data) {
return Ut.valueJArray(data.getJsonArray(KName.LIST));
}
public static JsonObject pageData(final JsonObject pageData, final Function function) {
return Web.pageData(pageData, function);
}
/*
* JqTool Engine method
* 1) whereDay
* 2) whereAnd
* 3) whereOr
* 4) whereKeys
*/
public static JsonObject whereDay(final JsonObject filters, final String field, final Instant instant) {
return Where.whereDay(filters, field, instant);
}
public static JsonObject whereDay(final JsonObject filters, final String field, final LocalDateTime instant) {
return Where.whereDay(filters, field, Ut.parse(instant).toInstant());
}
public static JsonObject whereKeys(final Set keys) {
return Where.whereKeys(Ut.toJArray(keys));
}
public static JsonObject whereKeys(final JsonArray keys) {
return Where.whereKeys(keys);
}
public static JsonObject whereAnd() {
return Where.whereAnd();
}
public static JsonObject whereAnd(final String field, final Object value) {
return Where.whereAnd().put(field, value);
}
public static JsonObject whereOr() {
return Where.whereOr();
}
public static JsonObject whereOr(final String field, final Object value) {
return Where.whereOr().put(field, value);
}
// Where current condition is null
/*
* Query Engine API
*
* QH -> Query with Criteria (全格式)
* H -> Criteria (查询条件)
* V -> Projection (列过滤)
*
* 1) irNil / irAnd / irOne
* - irNil: 判断查询条件是否为空,"": true | false 单节点也为空
* - irOp: 判断查询条件是 AND 还是 OR,AND返回true,OR返回false
* - irOne: 判断查询条件是否单条件(只有一个条件)
* 2) irAndQH / irAndH
* - irAndQH: 参数本身为全格式:
* {
* "criteria": {}
* }
* - irAndH: 参数本身为全格式中的 criteria 纯格式
* 3) irQV / irV
* - irQV: 参数本身为全格式:
* {
* "projection": []
* }
* - irV: 参数本身为全格式中的 projection 纯格式
*
* 全格式返回全格式,纯格式返回纯格式
*/
public static boolean irNil(final JsonObject condition) {
return Query.irNil(condition);
}
public static boolean irOp(final JsonObject condition) {
return Query.irAnd(condition);
}
public static boolean irOne(final JsonObject condition) {
return Query.irOne(condition);
}
// ---------------------- Qr Modification --------------------------
public static JsonObject irAndQH(final JsonObject qr, final Kv kv) {
Objects.requireNonNull(kv);
return Query.irQH(qr, kv.key(), kv.value());
}
public static JsonObject irAndQH(final JsonObject qr, final String field, final Object value) {
return Query.irQH(qr, field, value);
}
public static JsonObject irAndQH(final JsonObject query, final JsonObject criteria, final boolean clear) {
return Query.irQH(query, criteria, clear);
}
public static JsonObject irAndH(final JsonObject original, final JsonObject criteria) {
return Query.irH(original, criteria);
}
public static JsonObject irAndH(final JsonObject original, final String field, final Object value) {
return Query.irH(original, field, value);
}
public static JsonObject irAndH(final JsonObject original, final Kv kv) {
Objects.requireNonNull(kv);
return Query.irH(original, kv.key(), kv.value());
}
// Qr Combine ( projection + projection )
public static JsonObject irQV(final JsonObject query, final JsonArray projection, final boolean clear) {
return Query.irQV(query, projection, clear);
}
public static JsonArray irV(final JsonArray original, final JsonArray projection) {
return Query.irV(original, projection);
}
// ---------------------- Request Data Extract --------------------------
// -> Message -> T ( Interface mode )
public static JsonArray getArray(final Envelop envelop, final int index) {
return In.request(envelop, index, JsonArray.class);
}
// -> Message -> T ( Interface mode )
public static JsonArray getArray(final Envelop envelop) {
return In.request(envelop, 0, JsonArray.class);
}
// -> Message -> T ( Interface mode )
public static JsonArray getArray1(final Envelop envelop) {
return In.request(envelop, 1, JsonArray.class);
}
// -> Message -> T ( Interface mode )
public static JsonArray getArray2(final Envelop envelop) {
return In.request(envelop, 2, JsonArray.class);
}
// -> Message -> String ( Interface mode )
public static String getString(final Envelop envelop, final int index) {
return In.request(envelop, index, String.class);
}
// -> Message -> String ( Interface mode )
public static String getString(final Envelop envelop) {
return In.request(envelop, 0, String.class);
}
// -> Message -> String ( Interface mode )
public static String getString1(final Envelop envelop) {
return In.request(envelop, 1, String.class);
}
// -> Message -> String ( Interface mode )
public static String getString2(final Envelop envelop) {
return In.request(envelop, 2, String.class);
}
// -> Message -> String ( Interface mode )
public static Vis getVis(final Envelop envelop, final int index) {
return In.request(envelop, index, Vis.class);
}
// -> Message -> String ( Interface mode )
public static Vis getVis(final Envelop envelop) {
return In.request(envelop, 0, Vis.class);
}
// -> Message -> String ( Interface mode )
public static Vis getVis1(final Envelop envelop) {
return In.request(envelop, 1, Vis.class);
}
// -> Message -> String ( Interface mode )
public static Vis getVis2(final Envelop envelop) {
return In.request(envelop, 2, Vis.class);
}
// -> Message -> JsonObject ( Interface mode )
public static JsonObject getJson(final Envelop envelop, final int index) {
return In.request(envelop, index, JsonObject.class);
}
// -> Message -> JsonObject ( Interface mode )
public static T fromEnvelop(final Envelop envelop, final Class