diff --git a/src/org/redkale/net/sncp/SncpClient.java b/src/org/redkale/net/sncp/SncpClient.java index 0b8b5df70..50b261e05 100644 --- a/src/org/redkale/net/sncp/SncpClient.java +++ b/src/org/redkale/net/sncp/SncpClient.java @@ -73,7 +73,6 @@ public final class SncpClient { for (int i = 0; i < params.length; i++) { if (AsyncHandler.class.isAssignableFrom(params[i])) { handlerFuncIndex = i; - this.paramTypes[i] = AsyncHandler.class; break; } } @@ -107,6 +106,15 @@ public final class SncpClient { this.handlerFuncParamIndex = handlerFuncIndex; this.handlerAttachParamIndex = handlerAttachIndex; this.paramAttrs = hasattr ? atts : null; + if (handlerFuncIndex > 0) { + Type handlerFuncType = this.paramTypes[handlerFuncIndex]; + if (handlerFuncType instanceof ParameterizedType) { + ParameterizedType handlerpt = (ParameterizedType) handlerFuncType; + //后续可以添加验证, AsyncHandler的第一个泛型必须与方法返回值类型相同, 第二个泛型必须与@RpcAttachment的参数类型相同 + //需要考虑AsyncHandler的子类形态, 有可能0、1、2、。。。多个泛型 + } + this.paramTypes[handlerFuncIndex] = AsyncHandler.class; + } } @Override diff --git a/src/org/redkale/service/DataSourceService.java b/src/org/redkale/service/DataSourceService.java index 43210ae69..fb7f17303 100644 --- a/src/org/redkale/service/DataSourceService.java +++ b/src/org/redkale/service/DataSourceService.java @@ -225,8 +225,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean) { - return getNumberResult(handler, entityClass, func, column, FilterNodeBean.createFilterNode(bean)); + public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final String column, @RpcAttachment final B bean) { + Number rs = source.getNumberResult(entityClass, func, column, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -259,8 +261,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final Number defVal, @RpcAttachment final String column, final FilterBean bean) { - return getNumberResult(handler, entityClass, func, defVal, column, FilterNodeBean.createFilterNode(bean)); + public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final Number defVal, @RpcAttachment final String column, final FilterBean bean) { + Number rs = source.getNumberResult(entityClass, func, defVal, column, bean); + if (handler != null) handler.completed(rs, column); + return rs; } @Override @@ -293,8 +297,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Map getNumberMap(final AsyncHandler, FilterNode> handler, final Class entityClass, @RpcAttachment final FilterBean bean, final FilterFuncColumn... columns) { - return getNumberMap(handler, entityClass, FilterNodeBean.createFilterNode(bean), columns); + public Map getNumberMap(final AsyncHandler, B> handler, final Class entityClass, @RpcAttachment final B bean, final FilterFuncColumn... columns) { + Map rs = source.getNumberMap(entityClass, bean, columns); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -327,8 +333,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Map queryColumnMap(final AsyncHandler, String> handler, final Class entityClass, @RpcAttachment final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) { - return queryColumnMap(handler, entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean)); + public Map queryColumnMap(final AsyncHandler, String> handler, final Class entityClass, @RpcAttachment final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) { + Map rs = source.queryColumnMap(entityClass, keyColumn, func, funcColumn, bean); + if (handler != null) handler.completed(rs, keyColumn); + return rs; } @Override @@ -385,8 +393,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final T find(final AsyncHandler handler, final Class clazz, final FilterBean bean) { - return find(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public T find(final AsyncHandler handler, final Class clazz, @RpcAttachment final B bean) { + T rs = source.find(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -407,8 +417,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, final FilterBean bean) { - return find(handler, clazz, selects, FilterNodeBean.createFilterNode(bean)); + public T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, @RpcAttachment final B bean) { + T rs = source.find(clazz, selects, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -441,8 +453,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final FilterBean bean) { - return findColumn(handler, clazz, column, FilterNodeBean.createFilterNode(bean)); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, @RpcAttachment final B bean) { + Serializable rs = source.findColumn(clazz, column, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -475,8 +489,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, final FilterBean bean) { - return findColumn(handler, clazz, column, defValue, FilterNodeBean.createFilterNode(bean)); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, @RpcAttachment final B bean) { + Serializable rs = source.findColumn(clazz, column, defValue, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -509,8 +525,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final boolean exists(final AsyncHandler handler, final Class clazz, final FilterBean bean) { - return exists(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public boolean exists(final AsyncHandler handler, final Class clazz, @RpcAttachment final B bean) { + boolean rs = source.exists(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -543,8 +561,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final HashSet queryColumnSet(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final FilterBean bean) { - return queryColumnSet(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean)); + public HashSet queryColumnSet(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, @RpcAttachment final B bean) { + HashSet rs = source.queryColumnSet(selectedColumn, clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -577,8 +597,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryColumnList(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, FilterBean bean) { - return queryColumnList(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean)); + public List queryColumnList(final AsyncHandler, B> handler, String selectedColumn, Class clazz, @RpcAttachment final B bean) { + List rs = source.queryColumnList(selectedColumn, clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -599,8 +621,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryColumnList(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, Flipper flipper, FilterBean bean) { - return queryColumnList(handler, selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryColumnList(final AsyncHandler, B> handler, String selectedColumn, Class clazz, Flipper flipper, @RpcAttachment final B bean) { + List rs = source.queryColumnList(selectedColumn, clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -621,8 +645,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Sheet queryColumnSheet(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, Flipper flipper, FilterBean bean) { - return queryColumnSheet(handler, selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet queryColumnSheet(final AsyncHandler, B> handler, String selectedColumn, Class clazz, Flipper flipper, @RpcAttachment B bean) { + Sheet rs = source.queryColumnSheet(selectedColumn, clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -655,8 +681,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final FilterBean bean) { - return queryList(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, @RpcAttachment final B bean) { + List rs = source.queryList(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -677,8 +705,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final FilterBean bean) { - return queryList(handler, clazz, selects, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, @RpcAttachment final B bean) { + List rs = source.queryList(clazz, selects, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -711,8 +741,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean) { - return queryList(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, @RpcAttachment final B bean) { + List rs = source.queryList(clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -733,8 +765,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) { - return queryList(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, @RpcAttachment final B bean) { + List rs = source.queryList(clazz, selects, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -755,8 +789,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean) { - return querySheet(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, @RpcAttachment final B bean) { + Sheet rs = source.querySheet(clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -777,8 +813,10 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public final Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) { - return querySheet(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, @RpcAttachment final B bean) { + Sheet rs = source.querySheet(clazz, selects, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index 30175acd8..d297e638b 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -1308,8 +1308,10 @@ public final class DataDefaultSource implements DataSource, Function handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean) { - return getNumberResult(handler, entityClass, func, column, FilterNodeBean.createFilterNode(bean)); + public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final String column, final B bean) { + Number rs = getNumberResult(entityClass, func, column, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1342,7 +1344,7 @@ public final class DataDefaultSource implements DataSource, Function handler, final Class entityClass, final FilterFunc func, final Number defVal, final String column, final FilterBean bean) { + public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final Number defVal, final String column, final FilterBean bean) { return getNumberResult(handler, entityClass, func, defVal, column, FilterNodeBean.createFilterNode(bean)); } @@ -1364,8 +1366,10 @@ public final class DataDefaultSource implements DataSource, Function Map getNumberMap(final AsyncHandler, FilterNode> handler, final Class entityClass, final FilterBean bean, final FilterFuncColumn... columns) { - return getNumberMap(handler, entityClass, FilterNodeBean.createFilterNode(bean), columns); + public Map getNumberMap(final AsyncHandler, B> handler, final Class entityClass, final B bean, final FilterFuncColumn... columns) { + Map rs = getNumberMap(entityClass, bean, columns); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1501,7 +1505,7 @@ public final class DataDefaultSource implements DataSource, Function Map queryColumnMap(final AsyncHandler, String> handler, final Class entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) { + public Map queryColumnMap(final AsyncHandler, String> handler, final Class entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) { return queryColumnMap(handler, entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean)); } @@ -1629,8 +1633,10 @@ public final class DataDefaultSource implements DataSource, Function T find(final AsyncHandler handler, final Class clazz, final FilterBean bean) { - return find(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public T find(final AsyncHandler handler, final Class clazz, final B bean) { + T rs = find(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1651,8 +1657,10 @@ public final class DataDefaultSource implements DataSource, Function T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, final FilterBean bean) { - return find(handler, clazz, selects, FilterNodeBean.createFilterNode(bean)); + public T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, final B bean) { + T rs = find(clazz, selects, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1712,8 +1720,10 @@ public final class DataDefaultSource implements DataSource, Function Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final FilterBean bean) { - return findColumn(handler, clazz, column, FilterNodeBean.createFilterNode(bean)); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final B bean) { + Serializable rs = findColumn(clazz, column, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1781,8 +1791,10 @@ public final class DataDefaultSource implements DataSource, Function Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, final FilterBean bean) { - return findColumn(handler, clazz, column, defValue, FilterNodeBean.createFilterNode(bean)); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, final B bean) { + Serializable rs = findColumn(clazz, column, defValue, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1879,8 +1891,10 @@ public final class DataDefaultSource implements DataSource, Function boolean exists(final AsyncHandler handler, final Class clazz, final FilterBean bean) { - return exists(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public boolean exists(final AsyncHandler handler, final Class clazz, final B bean) { + boolean rs = exists(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1943,8 +1957,10 @@ public final class DataDefaultSource implements DataSource, Function HashSet queryColumnSet(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final FilterBean bean) { - return queryColumnSet(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean)); + public HashSet queryColumnSet(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, final B bean) { + HashSet rs = queryColumnSet(selectedColumn, clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1977,8 +1993,10 @@ public final class DataDefaultSource implements DataSource, Function List queryColumnList(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, FilterBean bean) { - return queryColumnList(handler, selectedColumn, clazz, FilterNodeBean.createFilterNode(bean)); + public List queryColumnList(final AsyncHandler, B> handler, String selectedColumn, Class clazz, B bean) { + List rs = queryColumnList(selectedColumn, clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -1999,8 +2017,10 @@ public final class DataDefaultSource implements DataSource, Function List queryColumnList(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, Flipper flipper, FilterBean bean) { - return queryColumnList(handler, selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryColumnList(final AsyncHandler, B> handler, String selectedColumn, Class clazz, Flipper flipper, B bean) { + List rs = queryColumnList(selectedColumn, clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2033,8 +2053,10 @@ public final class DataDefaultSource implements DataSource, Function Sheet queryColumnSheet(final AsyncHandler, FilterNode> handler, String selectedColumn, Class clazz, Flipper flipper, FilterBean bean) { - return queryColumnSheet(handler, selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet queryColumnSheet(final AsyncHandler, B> handler, String selectedColumn, Class clazz, Flipper flipper, B bean) { + Sheet rs = queryColumnSheet(selectedColumn, clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2101,8 +2123,10 @@ public final class DataDefaultSource implements DataSource, Function List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final FilterBean bean) { - return queryList(handler, clazz, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final B bean) { + List rs = queryList(clazz, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2133,8 +2157,10 @@ public final class DataDefaultSource implements DataSource, Function List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final FilterBean bean) { - return queryList(handler, clazz, selects, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final B bean) { + List rs = queryList(clazz, selects, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2167,8 +2193,10 @@ public final class DataDefaultSource implements DataSource, Function List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean) { - return queryList(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, final B bean) { + List rs = queryList(clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2189,8 +2217,10 @@ public final class DataDefaultSource implements DataSource, Function List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) { - return queryList(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final B bean) { + List rs = queryList(clazz, selects, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2222,8 +2252,10 @@ public final class DataDefaultSource implements DataSource, Function Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean) { - return querySheet(handler, clazz, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, final B bean) { + Sheet rs = querySheet(clazz, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override @@ -2255,8 +2287,10 @@ public final class DataDefaultSource implements DataSource, Function Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean) { - return querySheet(handler, clazz, selects, flipper, FilterNodeBean.createFilterNode(bean)); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final B bean) { + Sheet rs = querySheet(clazz, selects, flipper, bean); + if (handler != null) handler.completed(rs, bean); + return rs; } @Override diff --git a/src/org/redkale/source/DataSource.java b/src/org/redkale/source/DataSource.java index 2df3501cf..a9358a0b6 100644 --- a/src/org/redkale/source/DataSource.java +++ b/src/org/redkale/source/DataSource.java @@ -504,6 +504,7 @@ public interface DataSource { * 等价SQL: SELECT FUNC{column} FROM {table} WHERE {filter bean}
* 如 getNumberResult(Record.class, FilterFunc.COUNT, null, (FilterBean)null) 等价于: SELECT COUNT(*) FROM {table}
* + * @param Filter泛型 * @param handler 回调函数 * @param entityClass Entity类 * @param func 聚合函数 @@ -513,7 +514,7 @@ public interface DataSource { * @return 聚合结果 * */ - public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final String column, final FilterBean bean); + public Number getNumberResult(final AsyncHandler handler, final Class entityClass, final FilterFunc func, final String column, final B bean); /** * 获取符合过滤条件记录的聚合结果, 无结果返回null
@@ -684,6 +685,7 @@ public interface DataSource { * 如 getNumberMap(Record.class, (FilterBean)null, new FilterFuncColumn(FilterFunc.MAX, "createtime")) 等价于: SELECT MAX(createtime) FROM {table}
* * @param Number + * @param Filter泛型 * @param handler 回调函数 * @param entityClass Entity类 * @param bean 过滤条件 @@ -691,7 +693,7 @@ public interface DataSource { * * @return 聚合结果Map */ - public Map getNumberMap(final AsyncHandler, FilterNode> handler, final Class entityClass, final FilterBean bean, final FilterFuncColumn... columns); + public Map getNumberMap(final AsyncHandler, B> handler, final Class entityClass, final B bean, final FilterFuncColumn... columns); /** * 获取符合过滤条件记录的聚合结果Map
@@ -928,13 +930,14 @@ public interface DataSource { * 等价SQL: SELECT * FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param bean 过滤条件 * * @return Entity对象 */ - public T find(final AsyncHandler handler, final Class clazz, final FilterBean bean); + public T find(final AsyncHandler handler, final Class clazz, final B bean); /** * 获取符合过滤条件单个记录, 返回null表示不存在值
@@ -979,6 +982,7 @@ public interface DataSource { * 等价SQL: SELECT {column1},{column2}, ··· FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param selects 指定字段 @@ -986,7 +990,7 @@ public interface DataSource { * * @return Entity对象 */ - public T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, final FilterBean bean); + public T find(final AsyncHandler handler, final Class clazz, final SelectColumn selects, final B bean); /** * 获取符合过滤条件单个记录, 返回null表示不存在值
@@ -1060,6 +1064,7 @@ public interface DataSource { * 等价SQL: SELECT {column} FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param column 字段名 @@ -1067,7 +1072,7 @@ public interface DataSource { * * @return 字段值 */ - public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final FilterBean bean); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final B bean); /** * 获取符合过滤条件单个记录的单个字段值, 返回null表示不存在值
@@ -1144,6 +1149,7 @@ public interface DataSource { * 等价SQL: SELECT {column} FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param column 字段名 @@ -1152,7 +1158,7 @@ public interface DataSource { * * @return 字段值 */ - public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, final FilterBean bean); + public Serializable findColumn(final AsyncHandler handler, final Class clazz, final String column, final Serializable defValue, final B bean); /** * 获取符合过滤条件单个记录的单个字段值, 不存在值则返回默认值
@@ -1225,13 +1231,14 @@ public interface DataSource { * 等价SQL: SELECT COUNT(*) FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param bean 过滤条件 * * @return 是否存在 */ - public boolean exists(final AsyncHandler handler, final Class clazz, final FilterBean bean); + public boolean exists(final AsyncHandler handler, final Class clazz, final B bean); /** * 判断是否存在符合过滤条件的记录
@@ -1310,6 +1317,7 @@ public interface DataSource { * * @param Entity泛型 * @param 字段类型 + * @param Filter泛型 * @param handler 回调函数 * @param selectedColumn 指定字段 * @param clazz Entity类 @@ -1317,7 +1325,7 @@ public interface DataSource { * * @return 字段值的集合 */ - public HashSet queryColumnSet(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final FilterBean bean); + public HashSet queryColumnSet(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, final B bean); /** * 查询符合过滤条件记录的某个字段Set集合
@@ -1399,6 +1407,7 @@ public interface DataSource { * * @param Entity泛型 * @param 字段类型 + * @param Filter泛型 * @param handler 回调函数 * @param selectedColumn 指定字段 * @param clazz Entity类 @@ -1406,7 +1415,7 @@ public interface DataSource { * * @return 字段值的集合 */ - public List queryColumnList(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final FilterBean bean); + public List queryColumnList(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, final B bean); /** * 查询符合过滤条件记录的某个字段List集合
@@ -1458,6 +1467,7 @@ public interface DataSource { * * @param Entity泛型 * @param 字段类型 + * @param Filter泛型 * @param handler 回调函数 * @param selectedColumn 指定字段 * @param clazz Entity类 @@ -1466,7 +1476,7 @@ public interface DataSource { * * @return 字段值的集合 */ - public List queryColumnList(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final Flipper flipper, final FilterBean bean); + public List queryColumnList(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的某个字段List集合
@@ -1520,6 +1530,7 @@ public interface DataSource { * * @param Entity泛型 * @param 字段类型 + * @param Filter泛型 * @param handler 回调函数 * @param selectedColumn 指定字段 * @param clazz Entity类 @@ -1528,7 +1539,7 @@ public interface DataSource { * * @return 字段值的集合 */ - public Sheet queryColumnSheet(final AsyncHandler, FilterNode> handler, final String selectedColumn, final Class clazz, final Flipper flipper, final FilterBean bean); + public Sheet queryColumnSheet(final AsyncHandler, B> handler, final String selectedColumn, final Class clazz, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的某个字段Sheet集合
@@ -1605,13 +1616,14 @@ public interface DataSource { * 等价SQL: SELECT * FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param bean 过滤条件 * * @return Entity的集合 */ - public List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final FilterBean bean); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final B bean); /** * 查询符合过滤条件记录的List集合
@@ -1656,6 +1668,7 @@ public interface DataSource { * 等价SQL: SELECT {column1},{column2}, ··· FROM {table} WHERE {filter bean}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param selects 指定字段 @@ -1663,7 +1676,7 @@ public interface DataSource { * * @return Entity的集合 */ - public List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final FilterBean bean); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final B bean); /** * 查询符合过滤条件记录的List集合
@@ -1739,6 +1752,7 @@ public interface DataSource { * 等价SQL: SELECT * FROM {table} WHERE {filter bean} ORDER BY {flipper.sort} LIMIT {flipper.limit}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param flipper 翻页对象 @@ -1746,7 +1760,7 @@ public interface DataSource { * * @return Entity的集合 */ - public List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的List集合
@@ -1796,6 +1810,7 @@ public interface DataSource { * 等价SQL: SELECT {column1},{column2}, ··· FROM {table} WHERE {filter bean} ORDER BY {flipper.sort} LIMIT {flipper.limit}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param selects 指定字段 @@ -1804,7 +1819,7 @@ public interface DataSource { * * @return Entity的集合 */ - public List queryList(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean); + public List queryList(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的List集合
@@ -1854,6 +1869,7 @@ public interface DataSource { * 等价SQL: SELECT * FROM {table} WHERE {filter bean} ORDER BY {flipper.sort} LIMIT {flipper.limit}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param flipper 翻页对象 @@ -1861,7 +1877,7 @@ public interface DataSource { * * @return Entity的集合 */ - public Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final Flipper flipper, final FilterBean bean); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的Sheet集合
@@ -1909,6 +1925,7 @@ public interface DataSource { * 等价SQL: SELECT {column1},{column2}, ··· FROM {table} WHERE {filter bean} ORDER BY {flipper.sort} LIMIT {flipper.limit}
* * @param Entity泛型 + * @param Filter泛型 * @param handler 回调函数 * @param clazz Entity类 * @param selects 指定字段 @@ -1917,7 +1934,7 @@ public interface DataSource { * * @return Entity的集合 */ - public Sheet querySheet(final AsyncHandler, FilterNode> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterBean bean); + public Sheet querySheet(final AsyncHandler, B> handler, final Class clazz, final SelectColumn selects, final Flipper flipper, final B bean); /** * 查询符合过滤条件记录的Sheet集合
diff --git a/src/org/redkale/util/AsyncHandler.java b/src/org/redkale/util/AsyncHandler.java index bc45a5e40..21c7e98a1 100644 --- a/src/org/redkale/util/AsyncHandler.java +++ b/src/org/redkale/util/AsyncHandler.java @@ -46,6 +46,33 @@ public interface AsyncHandler extends CompletionHandler { }; } + /** + * 创建 AsyncHandler 对象 + * + * @param 结果对象的泛型 + * @param 附件对象的泛型 + * @param success 成功的回调函数 + * @param fail 失败的回调函数 + * @param handler 子回调函数 + * + * @return AsyncHandler + */ + public static AsyncHandler create(final BiConsumer success, final BiConsumer fail, final AsyncHandler handler) { + return new AsyncHandler() { + @Override + public void completed(V result, A attachment) { + if (success != null) success.accept(result, attachment); + if (handler != null) handler.completed(result, attachment); + } + + @Override + public void failed(Throwable exc, A attachment) { + if (fail != null) fail.accept(exc, attachment); + if (handler != null) handler.failed(exc, attachment); + } + }; + } + /** * 创建没有返回结果的 AsyncHandler 对象 *