diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/EnvUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/EnvUtils.java index 7655b5f1a58fc8ff83af7cafe0b3aa6bb978d3a6..ef8121ec56f2460889daaea34f4f870344f31e23 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/EnvUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/EnvUtils.java @@ -16,7 +16,9 @@ import org.springframework.core.env.Environment; public class EnvUtils { public static final String DEVELOPMENT = "dev"; + public static final String TESTING = "test"; + public static final String PRODUCTION = "prod"; public static boolean isDevelopment() { diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/IdWorker.java b/commons/common-util/src/main/java/com/schbrain/common/util/IdWorker.java index 67959a96e976a53d6cfe922a0d1bdb5ae08f4a8b..c8e4eb2f88d336260f5cd9b076a2322b2f9fbec0 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/IdWorker.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/IdWorker.java @@ -17,8 +17,7 @@ package com.schbrain.common.util; -import java.security.SecureRandom; -import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; /*** * @author adyliu (imxylz@gmail.com) @@ -30,30 +29,43 @@ public class IdWorker { * 生成的自增id的大小减少到18位 */ private static final long ID_EPOCH = 1420041600000L; + private static final long workerIdBits = 5L; + private static final long datacenterIdBits = 5L; + private static final long maxWorkerId = ~(-1L << workerIdBits); + private static final long maxDatacenterId = ~(-1L << datacenterIdBits); + private static final long sequenceBits = 12L; + private static final long workerIdShift = sequenceBits; + private static final long datacenterIdShift = sequenceBits + workerIdBits; + private static final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; + private static final long sequenceMask = ~(-1L << sequenceBits); - private static final Random r = new SecureRandom(); - // 需要等 r 初始化 - private static final IdWorker INSTANCE = new IdWorker(ID_EPOCH); + + private static final IdWorker INSTANCE = new IdWorker(); + private final long workerId; + private final long datacenterId; + private final long idEpoch; + private long lastTimestamp = -1L; + private long sequence; - public IdWorker(long idEpoch) { - this(r.nextInt((int) maxWorkerId), r.nextInt((int) maxDatacenterId), 0, idEpoch); + public IdWorker() { + this(ThreadLocalRandom.current().nextLong(maxWorkerId), ThreadLocalRandom.current().nextLong(maxDatacenterId), 0); } public IdWorker(long workerId, long datacenterId, long sequence) { - this(workerId, datacenterId, sequence, 1420041600000L); + this(workerId, datacenterId, sequence, ID_EPOCH); } public IdWorker(long workerId, long datacenterId, long sequence, long idEpoch) { @@ -104,10 +116,7 @@ public class IdWorker { sequence = 0; } lastTimestamp = timestamp; - return ((timestamp - idEpoch) << timestampLeftShift)// - | (datacenterId << datacenterIdShift)// - | (workerId << workerIdShift)// - | sequence; + return ((timestamp - idEpoch) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) | sequence; } private long tilNextMillis(long lastTimestamp) { diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java index 0d2727cbf873104a4ff759aeda6bf1a5335bf78e..6d6f81f7dcb73a023b4f5b06df2c3c06675a98fa 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java @@ -1,6 +1,5 @@ package com.schbrain.common.util; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -29,6 +28,19 @@ public class InetUtils { return hostInfo; } + public static int getIpAddressAsInt(HostInfo hostInfo) { + String host = hostInfo.getIpAddress(); + if (host == null) { + host = hostInfo.getHostname(); + } + try { + InetAddress inetAddress = InetAddress.getByName(host); + return ByteBuffer.wrap(inetAddress.getAddress()).getInt(); + } catch (final UnknownHostException e) { + throw new IllegalArgumentException(e); + } + } + private static InetAddress findFirstNonLoopBackAddress() { InetAddress result = null; try { @@ -80,25 +92,9 @@ public class InetUtils { @Data public static class HostInfo { - public static final String NAME = "machineHostInfo"; - private String ipAddress; - private String hostname; - @JsonIgnore - public int getIpAddressAsInt() { - InetAddress inetAddress; - String host = this.ipAddress; - if (host == null) { - host = this.hostname; - } - try { - inetAddress = InetAddress.getByName(host); - } catch (final UnknownHostException e) { - throw new IllegalArgumentException(e); - } - return ByteBuffer.wrap(inetAddress.getAddress()).getInt(); - } + private String hostname; } diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java index 3654c2413bad95fe25c39d90e9beac7e02aa93c0..0800a4f96e1feee3a6ba61328df88821d3266944 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java @@ -4,9 +4,7 @@ import cn.hutool.extra.spring.SpringUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.node.NullNode; -import com.schbrain.common.constants.ResponseActionConstants; -import com.schbrain.common.constants.ResponseCodeConstants; -import com.schbrain.common.exception.BaseException; +import com.schbrain.common.util.exception.JSONException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -25,6 +23,7 @@ import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT; public class JacksonUtils { private static ObjectMapper OBJECT_MAPPER; + private static ObjectMapper PRETTY_OBJECT_MAPPER; public static ObjectMapper getObjectMapper() { @@ -230,14 +229,4 @@ public class JacksonUtils { } } - public static class JSONException extends BaseException { - - private static final long serialVersionUID = 1656914307906296812L; - - public JSONException(String message, Throwable cause) { - super(message, cause, ResponseCodeConstants.SERVER_ERROR, ResponseActionConstants.ALERT); - } - - } - } \ No newline at end of file diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/exception/JSONException.java b/commons/common-util/src/main/java/com/schbrain/common/util/exception/JSONException.java new file mode 100644 index 0000000000000000000000000000000000000000..c8a35dfc8b26121bf9a8149512aeae45b2bfc3da --- /dev/null +++ b/commons/common-util/src/main/java/com/schbrain/common/util/exception/JSONException.java @@ -0,0 +1,19 @@ +package com.schbrain.common.util.exception; + +import com.schbrain.common.constants.ResponseActionConstants; +import com.schbrain.common.constants.ResponseCodeConstants; +import com.schbrain.common.exception.BaseException; + +/** + * @author liaozan + * @since 2023-05-06 + */ +public class JSONException extends BaseException { + + private static final long serialVersionUID = 1656914307906296812L; + + public JSONException(String message, Throwable cause) { + super(message, cause, ResponseCodeConstants.SERVER_ERROR, ResponseActionConstants.ALERT); + } + +} \ No newline at end of file diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/ExcelReadListenerBase.java b/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/ExcelReadListenerBase.java index 680a017a7181b1c9ee8a7ceccb454909bfe2bcdc..a174c21327e4cec70c47a2c5f3eb50161c948d42 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/ExcelReadListenerBase.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/ExcelReadListenerBase.java @@ -25,7 +25,9 @@ public class ExcelReadListenerBase extends AnalysisEventListener { protected final Validator validator = SpringUtil.getBean(Validator.class); protected List dataList = new LinkedList<>(); + protected Map headers = new HashMap<>(); + protected Table errors = HashBasedTable.create(); protected boolean terminateOnValidateFail = false; diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/HierarchicalDataReadListener.java b/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/HierarchicalDataReadListener.java index 97e6bd9a053ede0af3671cb65d99d5fa6a21eb30..d658f76bdf5abf70a8fec1e50624663aa8f383c4 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/HierarchicalDataReadListener.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/support/excel/listener/HierarchicalDataReadListener.java @@ -80,6 +80,7 @@ public class HierarchicalDataReadListener extends ExcelReadListenerBase children = new LinkedList<>(); public boolean hasChildren() { diff --git a/commons/common/src/main/java/com/schbrain/common/constants/DateTimeFormatters.java b/commons/common/src/main/java/com/schbrain/common/constants/DateTimeFormatters.java index 61b44bd22e5b516330001cf42f3bc445cf26d200..06480dc296963c7a3bde9d0cc48e5a76f131abbf 100644 --- a/commons/common/src/main/java/com/schbrain/common/constants/DateTimeFormatters.java +++ b/commons/common/src/main/java/com/schbrain/common/constants/DateTimeFormatters.java @@ -9,25 +9,38 @@ import static java.time.format.DateTimeFormatter.ofPattern; * @author liaozan * @since 2021/10/15 */ -@SuppressWarnings("unused") public class DateTimeFormatters { public static final String YEAR_MONTH_PATTERN = "yyyy-MM"; + public static final String MONTH_DATE_PATTERN = "MM-dd"; + public static final String DATE_PATTERN = "yyyy-MM-dd"; + + public static final String DATE_PATTERN_WITH_DOT = "yyyy.MM.dd"; + public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + public static final String TIME_PATTERN = "HH:mm:ss"; + public static final String YEAR_MONTH_WITH_SLASH_PATTERN = "yyyy/MM"; + + public static final String DATE_WITH_SLASH_PATTERN = "yyyy/MM/dd"; + public static final DateTimeFormatter YEAR_MONTH = ofPattern(YEAR_MONTH_PATTERN).withZone(systemDefault()); + public static final DateTimeFormatter MONTH_DATE = ofPattern(MONTH_DATE_PATTERN).withZone(systemDefault()); + public static final DateTimeFormatter DATE = ofPattern(DATE_PATTERN).withZone(systemDefault()); + + public static final DateTimeFormatter DATE_WITH_DOT = ofPattern(DATE_PATTERN_WITH_DOT).withZone(systemDefault()); + public static final DateTimeFormatter DATE_TIME = ofPattern(DATE_TIME_PATTERN).withZone(systemDefault()); - public static final DateTimeFormatter TIME = ofPattern(TIME_PATTERN).withZone(systemDefault()); - public static final String YEAR_MONTH_WITH_SLASH_PATTERN = "yyyy/MM"; - public static final String DATE_WITH_SLASH_PATTERN = "yyyy/MM/dd"; + public static final DateTimeFormatter TIME = ofPattern(TIME_PATTERN).withZone(systemDefault()); public static final DateTimeFormatter YEAR_MONTH_WITH_SLASH = ofPattern(YEAR_MONTH_WITH_SLASH_PATTERN).withZone(systemDefault()); + public static final DateTimeFormatter DATE_WITH_SLASH = ofPattern(DATE_WITH_SLASH_PATTERN).withZone(systemDefault()); } \ No newline at end of file diff --git a/commons/common/src/main/java/com/schbrain/common/constants/PageConstants.java b/commons/common/src/main/java/com/schbrain/common/constants/PageConstants.java index 3bd6ec66f4a5b486c1e17fdd50b3d83930b36ed7..5b076627269753caaaa08ff1745ff3ad7f155d73 100644 --- a/commons/common/src/main/java/com/schbrain/common/constants/PageConstants.java +++ b/commons/common/src/main/java/com/schbrain/common/constants/PageConstants.java @@ -10,18 +10,22 @@ public class PageConstants { * 分页时是否 count */ public static final boolean DEFAULT_SEARCH_COUNT = true; + /** * 默认页码数 */ public static final int DEFAULT_PAGE_INDEX = 1; + /** * 默认分页大小 */ public static final int DEFAULT_PAGE_SIZE = 20; + /** * 默认总页数 */ public static final long DEFAULT_TOTAL_PAGE_COUNT = 1; + /** * 默认总记录数 */ diff --git a/commons/common/src/main/java/com/schbrain/common/constants/ResponseActionConstants.java b/commons/common/src/main/java/com/schbrain/common/constants/ResponseActionConstants.java index 57fcda3af79633221ea8c7c0a4cb1c434f157d50..e6e809a8cfafaa30029e7127cd868ab9467759ba 100644 --- a/commons/common/src/main/java/com/schbrain/common/constants/ResponseActionConstants.java +++ b/commons/common/src/main/java/com/schbrain/common/constants/ResponseActionConstants.java @@ -10,18 +10,22 @@ public class ResponseActionConstants { * 业务无异常时统一返回0 */ public static final int NO_ACTION = 0; + /** * 忽略异常 */ public static final int IGNORE = -1; + /** * 弹框 */ public static final int ALERT = -2; + /** * toast */ public static final int TOAST = -3; + /** * 弹框,点击确定后刷新页面 */ diff --git a/commons/common/src/main/java/com/schbrain/common/constants/ResponseCodeConstants.java b/commons/common/src/main/java/com/schbrain/common/constants/ResponseCodeConstants.java index ef0bdd7a34954494cc4af8373d93d67c50c81c87..47c58cdb8b7344ae23fd5e2c0ecabd5152c77cb6 100644 --- a/commons/common/src/main/java/com/schbrain/common/constants/ResponseCodeConstants.java +++ b/commons/common/src/main/java/com/schbrain/common/constants/ResponseCodeConstants.java @@ -10,22 +10,27 @@ public class ResponseCodeConstants { * 成功 */ public static final int SUCCESS = 0; + /** * 服务器错误,空指针、数组越界等非业务代码抛出异常 */ public static final int SERVER_ERROR = -1; + /** * 非法请求,参数异常、参数格式错误等接口的请求非法性抛出的通用错误 */ public static final int PARAM_INVALID = -2; + /** * 无权限 */ public static final int ACCESS_DENIED = -3; + /** * 用户未登录,且该接口需要登录 */ public static final int LOGIN_REQUIRED = -4; + /** * 系统维护 */ diff --git a/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java b/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java index e5f946e42a16bc249b3d7db6ad6cecebb37f690b..3723efeffd5be84c2199197a1d0834b3c1bdaa23 100644 --- a/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java +++ b/commons/common/src/main/java/com/schbrain/common/entity/PaginationInfo.java @@ -22,30 +22,37 @@ public class PaginationInfo implements Serializable { * 页索引 */ private long pageIndex = DEFAULT_PAGE_INDEX; + /** * 每个页面大小 */ private long pageSize = DEFAULT_PAGE_SIZE; + /** * 当前结果集记录数量 */ private long currentPageSize = DEFAULT_PAGE_INDEX; + /** * 总页面数量 */ private long totalPageCount = DEFAULT_TOTAL_COUNT; + /** * 满足条件的记录数量 */ private long totalCount = DEFAULT_TOTAL_COUNT; + /** * 是否有前一页 */ private boolean hasPrevPage = false; + /** * 是否有下一页 */ private boolean hasNextPage = false; + /** * 结果集, Use new ArrayList() instead of collections.emptyList() to prevent errors when users edit it later */ diff --git a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/StructureTreeNode.java b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/StructureTreeNode.java index f705ba1a2c24b1cad4342ac9eb009abc7f6a4e0c..8db6f84a553234590adbe9afbc6a0842286a0709 100644 --- a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/StructureTreeNode.java +++ b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/StructureTreeNode.java @@ -17,6 +17,7 @@ public class StructureTreeNode implements Serializable { private static final long serialVersionUID = -7732621737666937981L; private NODE node; + private List> children; } \ No newline at end of file diff --git a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java index 7e8bd08e882425f40eff8d08104f544f373d8de2..52cc7dc96e6bb7e067dbdf5920fe99831fb77554 100644 --- a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java +++ b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeNodeProcessor.java @@ -20,6 +20,7 @@ import java.util.*; public class TreeNodeProcessor { private final TreeNodeDao treeNodeDao; + private final TreeOperationAware operationHandler; public TreeNodeProcessor(BaseDao baseDao, TreeOperationAware operationHandler) { diff --git a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeQueryOption.java b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeQueryOption.java index 2242fbc60374ca1e988ee41dd5913218210b396a..7f9706f804208b49dfe00e2ea179c10b8b636f23 100644 --- a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeQueryOption.java +++ b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/TreeQueryOption.java @@ -10,29 +10,36 @@ public class TreeQueryOption { * 包括节点自身 */ public static final int TREE_QUERY_SELF_INCLUDE = 0; + /** * 不包括节点自身 */ public static final int TREE_QUERY_SELF_EXCLUDE = 1; + /** * 只包含直接子节点 */ public static final int TREE_QUERY_CHILDREN_DIRECT = 0; + /** * 包含所有子节点 */ public static final int TREE_QUERY_CHILDREN_ALL = 1; + /** * 深度排序-从根到叶子节点 */ public static final int TREE_QUERY_DEPTH_ORDER_ROOT_2_LEAF = 0; + /** * 深度排序-从叶子节点到根 */ public static final int TREE_QUERY_DEPTH_ORDER_LEAF_2_ROOT = 1; private int selfIncludeMode; + private int childrenMode; + private int depthOrder; private TreeQueryOption() { diff --git a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/constant/TreeConstant.java b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/constant/TreeConstant.java index 788ca0247e7ce038440efe3a79384c004d6a0264..b35422737a76b8dafa02c6a2d4d4f65f3f887729 100644 --- a/commons/module-tree/src/main/java/com/schbrain/common/module/tree/constant/TreeConstant.java +++ b/commons/module-tree/src/main/java/com/schbrain/common/module/tree/constant/TreeConstant.java @@ -7,6 +7,7 @@ package com.schbrain.common.module.tree.constant; public class TreeConstant { public static final Long ROOT_PARENT_ID = -1L; + public static final Long NODE_DELETE_VERSION_DEFAULT = 0L; } \ No newline at end of file diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionResolver.java b/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultGlobalExceptionResolver.java similarity index 89% rename from commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionResolver.java rename to commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultGlobalExceptionResolver.java index 1d92eff5e1977e387f5fecbd43e9e4e03e976f79..2026344e53a63a6e38ab542fe86d8e3be9780ac2 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/exception/GlobalExceptionResolver.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultGlobalExceptionResolver.java @@ -3,7 +3,6 @@ package com.schbrain.common.web.exception; import com.schbrain.common.web.annotation.ResponseWrapOption; import com.schbrain.common.web.properties.WebProperties; import com.schbrain.common.web.utils.HandlerMethodAnnotationUtils; -import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springframework.web.context.request.ServletWebRequest; @@ -27,22 +26,24 @@ import java.util.concurrent.ConcurrentHashMap; * @since 2022/8/30 */ @Slf4j -@Data @EqualsAndHashCode(callSuper = true) -public class GlobalExceptionResolver extends AbstractHandlerMethodExceptionResolver { +public class DefaultGlobalExceptionResolver extends AbstractHandlerMethodExceptionResolver { private final WebProperties webProperties; + + private final GlobalExceptionHandler exceptionHandler; + + private final ExceptionHandlerMethodResolver handlerMethodResolver; + private final HandlerMethodArgumentResolverComposite argumentResolverComposite; + private final HandlerMethodReturnValueHandlerComposite returnValueHandlerComposite; - private final Map, ExceptionHandlerMethodResolver> exceptionHandlerCache = new ConcurrentHashMap<>(64); - private GlobalExceptionHandler exceptionHandler; - private ExceptionHandlerMethodResolver handlerMethodResolver; + private final Map, ExceptionHandlerMethodResolver> exceptionHandlerCache = new ConcurrentHashMap<>(64); - public GlobalExceptionResolver(ExceptionHandlerExceptionResolver handlerMethodResolver, WebProperties webProperties, - GlobalExceptionHandler exceptionHandler) { - this.exceptionHandler = exceptionHandler; + public DefaultGlobalExceptionResolver(ExceptionHandlerExceptionResolver handlerMethodResolver, WebProperties webProperties, GlobalExceptionHandler exceptionHandler) { this.webProperties = webProperties; + this.exceptionHandler = exceptionHandler; this.handlerMethodResolver = new ExceptionHandlerMethodResolver(exceptionHandler.getClass()); this.argumentResolverComposite = handlerMethodResolver.getArgumentResolvers(); this.returnValueHandlerComposite = handlerMethodResolver.getReturnValueHandlers(); @@ -67,8 +68,7 @@ public class GlobalExceptionResolver extends AbstractHandlerMethodExceptionResol } @Override - protected final ModelAndView doResolveHandlerMethodException(HttpServletRequest request, HttpServletResponse response, - @Nullable HandlerMethod handlerMethod, Exception exception) { + protected final ModelAndView doResolveHandlerMethodException(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerMethod handlerMethod, Exception exception) { ServletInvocableHandlerMethod exceptionHandlerMethod = createExceptionHandlerMethod(exception, handlerMethod, exceptionHandler); if (exceptionHandlerMethod == null) { return null; @@ -115,6 +115,11 @@ public class GlobalExceptionResolver extends AbstractHandlerMethodExceptionResol return resolvedMethod; } + @Override + protected void logException(Exception ex, HttpServletRequest request) { + // nothing to do + } + private ExceptionHandlerMethodResolver getHandlerMethodResolver(Class handlerType) { return exceptionHandlerCache.computeIfAbsent(handlerType, key -> new ExceptionHandlerMethodResolver(handlerType)); } diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/exception/ExceptionHandlerWebMcvConfigurer.java b/commons/web-common/src/main/java/com/schbrain/common/web/exception/ExceptionHandlerWebMcvConfigurer.java index 5334b6bef0416d60e631213a07397c03ce255973..4c4d47078faa7da4b636c2a3d54fe9b2bb8b00de 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/exception/ExceptionHandlerWebMcvConfigurer.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/exception/ExceptionHandlerWebMcvConfigurer.java @@ -16,6 +16,7 @@ import java.util.List; public class ExceptionHandlerWebMcvConfigurer implements WebMvcConfigurer { private final WebProperties webProperties; + private final GlobalExceptionHandler globalExceptionHandler; public ExceptionHandlerWebMcvConfigurer(WebProperties webProperties, GlobalExceptionHandler globalExceptionHandler) { @@ -51,8 +52,8 @@ public class ExceptionHandlerWebMcvConfigurer implements WebMvcConfigurer { resolvers.add(index, createGlobalExceptionResolver(adviceExceptionResolver)); } - protected GlobalExceptionResolver createGlobalExceptionResolver(ExceptionHandlerExceptionResolver adviceExceptionResolver) { - return new GlobalExceptionResolver(adviceExceptionResolver, webProperties, globalExceptionHandler); + protected HandlerExceptionResolver createGlobalExceptionResolver(ExceptionHandlerExceptionResolver adviceExceptionResolver) { + return new DefaultGlobalExceptionResolver(adviceExceptionResolver, webProperties, globalExceptionHandler); } } \ No newline at end of file diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseBodyHandler.java b/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseBodyHandler.java index a01f0e5230e08a99675ed0b4edacf8c08bc6e395..21892d172b8c23c60493d66d70ddd41261c3ffb6 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseBodyHandler.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseBodyHandler.java @@ -23,7 +23,9 @@ import java.util.concurrent.ConcurrentHashMap; public class ResponseBodyHandler implements ResponseBodyAdvice { private final WebProperties webProperties; + private final List basePackages; + private final Map methodCache; public ResponseBodyHandler(WebProperties webProperties, List basePackages) { diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseDTO.java b/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseDTO.java index 850f14b8f0658fad560455f0f767ed864e3f8567..3dd91d1cf2c1be0033389c7914f8acd3624f6b3c 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseDTO.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/result/ResponseDTO.java @@ -18,9 +18,13 @@ public class ResponseDTO implements Serializable { private static final long serialVersionUID = 8559474982311419998L; private int code; + private int action; + private String message; + private T data; + private String uuid = TraceIdUtils.get(); public static ResponseDTO success() { diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/BuilderContext.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/BuilderContext.java index 10f84b1bcdb6b5c32530669120f6b9472183a25e..4ba413cc9ed9e492daf47a8aeddd432be9f48f95 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/BuilderContext.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/BuilderContext.java @@ -17,10 +17,15 @@ import java.util.Objects; public class BuilderContext { private final AbstractBuild build; + private final Launcher launcher; + private final FilePath workspace; + private final BuildListener listener; + private final Logger logger; + private final EnvVars envVars; private boolean imageHasBeenBuilt; @@ -90,10 +95,15 @@ public class BuilderContext { public static class Builder { private AbstractBuild build; + private Launcher launcher; + private FilePath workspace; + private BuildListener listener; + private Logger logger; + private EnvVars envVars; public Builder build(AbstractBuild build) { diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/IntegrationBuilder.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/IntegrationBuilder.java index e4867b0bcece38ef07132ae756002ea77acf2772..3019f89cc45c11f36494045f411940e99f536d3d 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/IntegrationBuilder.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/IntegrationBuilder.java @@ -31,7 +31,9 @@ import static com.schbrain.ci.jenkins.plugins.integration.builder.util.FileUtils public class IntegrationBuilder extends Builder { private final MavenConfig mavenConfig; + private final DockerConfig dockerConfig; + private final DeployToK8sConfig deployToK8sConfig; @DataBoundConstructor diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/BuildConfig.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/BuildConfig.java index d7f040fe66a4e21a0145c2380454098581d8d5c2..a266c11b835735baf9f78ea71f8cbe89f83acf51 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/BuildConfig.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/BuildConfig.java @@ -14,11 +14,17 @@ import java.io.IOException; public abstract class BuildConfig> extends AbstractDescribableImpl { protected AbstractBuild build; + protected Launcher launcher; + protected FilePath workspace; + protected BuildListener listener; + protected Logger logger; + protected EnvVars envVars; + protected BuilderContext context; public void build(BuilderContext context) throws IOException, InterruptedException { diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/DockerConfig.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/DockerConfig.java index 7c91fefb1b91dbfc74094c3e3a11cb8b2eb336d4..1f67569fdcb9372e8556035b62b5251a8f370058 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/DockerConfig.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/DockerConfig.java @@ -28,11 +28,17 @@ public class DockerConfig extends BuildConfig { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").withZone(ZoneId.systemDefault()); private final Boolean buildImage; + private final PushConfig pushConfig; + private final Boolean deleteImageAfterBuild; + private final String javaOpts; + private final String buildScriptUrl; + private final String buildScriptBranch; + private final Boolean disableSkywalking; @DataBoundConstructor @@ -140,6 +146,7 @@ public class DockerConfig extends BuildConfig { public static class PushConfig extends BuildConfig { private final Boolean pushImage; + private final String registry; @DataBoundConstructor diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/DeployTemplateComponent.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/DeployTemplateComponent.java index 55b66b50086b064918239b1dae9a37f92c899361..fafddaa7dd7337df37c210bab97bef8a354af68c 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/DeployTemplateComponent.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/DeployTemplateComponent.java @@ -23,10 +23,15 @@ import static com.schbrain.ci.jenkins.plugins.integration.builder.constants.Cons public class DeployTemplateComponent extends DeployStyleRadio { private final String namespace; + private final String replicas; + private final String memoryRequest; + private final String memoryLimit; + private final String nodeTag; + private final String port; @DataBoundConstructor diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/service/ServiceDeployConfig.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/service/ServiceDeployConfig.java index 2f56c683493ffcf77ba3aea2e63ebcea84f0c407..613d952e3bd9fc2638b7012fd785ba271a6ecca8 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/service/ServiceDeployConfig.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/config/deploy/service/ServiceDeployConfig.java @@ -22,8 +22,11 @@ import static com.schbrain.ci.jenkins.plugins.integration.builder.constants.Cons public class ServiceDeployConfig { private final String serviceMode; + private final String serviceNamespace; + private final String serviceName; + private final String servicePort; @DataBoundConstructor diff --git a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/constants/Constants.java b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/constants/Constants.java index 73f23e691765ac028b8666c4d0c3fcf403845483..a47b470dd58fdd1f2e4f8e23f1e12d606e2552d2 100644 --- a/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/constants/Constants.java +++ b/integration/integration-jenkins-plugin/src/main/java/com/schbrain/ci/jenkins/plugins/integration/builder/constants/Constants.java @@ -8,9 +8,13 @@ public class Constants { public static class BuildConstants { public static final String DEFAULT_SCRIPT_GIT_REPO = "git@gitlab.schbrain.com:tools/build-script.git"; + public static final String DEFAULT_SCRIPT_GIT_BRANCH = "main"; + public static final String SCRIPT_ZIP_NAME = "build-script.zip"; + public static final String BUILD_SCRIPT_NAME = "build-script"; + public static final String ENV_VARS = "envVars"; } @@ -18,16 +22,27 @@ public class Constants { public static class DeployConstants { public static final String DEPLOYMENT_TEMPLATE_FILE_NAME = "k8s-deploy-template.yaml"; + public static final String SERVICE_TEMPLATE_FILE_NAME = "k8s-service-template.yaml"; + public static final String K8S_POD_NAMESPACE = "NAMESPACE"; + public static final String K8S_POD_PORT = "PORT"; + public static final String K8S_POD_REPLICAS = "REPLICAS"; + public static final String K8S_POD_MEMORY_LIMIT = "MEMORY_LIMIT"; + public static final String K8S_POD_MEMORY_REQUEST = "MEMORY_REQUEST"; + public static final String K8S_POD_NODE_TAG = "NODE_TAG"; + public static final String K8S_SERVICE_MODE = "SERVICE_MODE"; + public static final String K8S_SERVICE_NAMESPACE = "SERVICE_NAMESPACE"; + public static final String K8S_SERVICE_NAME = "SERVICE_NAME"; + public static final String K8S_SERVICE_PORT = "SERVICE_PORT"; } @@ -35,12 +50,19 @@ public class Constants { public static class DockerConstants { public static final String BUILD_INFO_FILE_NAME = "dockerBuildInfo"; + public static final String DOCKERFILE_NAME = "Dockerfile"; + public static final String IMAGE = "IMAGE"; + public static final String REGISTRY = "REGISTRY"; + public static final String APP_NAME = "APP_NAME"; + public static final String VERSION = "VERSION"; + public static final String JAVA_OPTS = "JAVA_OPTS"; + public static final String DISABLE_SKYWALKING_OPTIONS = "-Dskywalking.agent.enable=false"; } @@ -48,7 +70,9 @@ public class Constants { public static class GitConstants { public static final String GIT_PROPERTIES_FILE = "git.properties"; + public static final String GIT_BRANCH = "git.branch"; + public static final String GIT_COMMITTER = "git.commit.user.name"; } diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java index 764ea03032a01171ac39b294a7ee68e63e28692d..13d15c5873500ca45f456d1725b718b6ce22cc5f 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ApolloConfigurationInitializerEnvironmentPostProcessor.java @@ -34,11 +34,8 @@ public class ApolloConfigurationInitializerEnvironmentPostProcessor extends Logg private static Map INIT_PROPERTIES = new LinkedHashMap<>(); - private final ConfigurablePropertiesLoader configurablePropertiesLoader; - public ApolloConfigurationInitializerEnvironmentPostProcessor(DeferredLogFactory deferredLogFactory, ConfigurableBootstrapContext bootstrapContext) { super(deferredLogFactory, bootstrapContext); - this.configurablePropertiesLoader = new ConfigurablePropertiesLoader(deferredLogFactory); } @Override @@ -48,7 +45,7 @@ public class ApolloConfigurationInitializerEnvironmentPostProcessor extends Logg return; } setRequiredProperty(environment); - configurablePropertiesLoader.load(environment, application); + new ConfigurablePropertiesLoader(deferredLogFactory, environment, application).load(); } @Override diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurablePropertiesLoader.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurablePropertiesLoader.java index 4e78bafb8751b3da964ad8c3ec492fb28bb86cbf..e23129c1dcab8632ddba77fbfe427321b9c4d2e2 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurablePropertiesLoader.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/ConfigurablePropertiesLoader.java @@ -1,12 +1,12 @@ package com.schbrain.framework.autoconfigure.apollo; -import cn.hutool.core.thread.GlobalThreadPool; import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.ConfigService; import com.schbrain.common.util.properties.OrderedMapPropertySource; import com.schbrain.common.util.support.ConfigurableProperties; -import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEvent; -import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEventListener; +import com.schbrain.framework.autoconfigure.apollo.event.ConcurrentEventMulticaster; +import com.schbrain.framework.autoconfigure.apollo.event.PropertiesPreparedEvent; +import com.schbrain.framework.autoconfigure.apollo.event.listener.PropertiesPreparedEventListener; import com.schbrain.framework.autoconfigure.apollo.properties.ApolloProperties; import com.schbrain.framework.autoconfigure.apollo.util.ConfigUtils; import org.apache.commons.collections4.CollectionUtils; @@ -14,13 +14,12 @@ import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; import org.springframework.boot.logging.DeferredLogFactory; import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ApplicationEventMulticaster; -import org.springframework.context.event.SimpleApplicationEventMulticaster; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.util.ClassUtils; import java.util.List; +import java.util.Set; import static org.springframework.core.io.support.SpringFactoriesLoader.loadFactories; @@ -35,23 +34,29 @@ class ConfigurablePropertiesLoader { */ private static final String PROPERTIES_PROPERTY_SOURCE = "ConfigurablePropertiesPropertySource"; + private final Log log; + private final DeferredLogFactory deferredLogFactory; - private final Log log; + private final ConfigurableEnvironment environment; - ConfigurablePropertiesLoader(DeferredLogFactory deferredLogFactory) { - this.deferredLogFactory = deferredLogFactory; + private final SpringApplication application; + + ConfigurablePropertiesLoader(DeferredLogFactory deferredLogFactory, ConfigurableEnvironment environment, SpringApplication application) { this.log = deferredLogFactory.getLog(ConfigurablePropertiesLoader.class); + this.deferredLogFactory = deferredLogFactory; + this.environment = environment; + this.application = application; } - void load(ConfigurableEnvironment environment, SpringApplication application) { + void load() { List configurableProperties = loadFactories(ConfigurableProperties.class, getClass().getClassLoader()); if (CollectionUtils.isEmpty(configurableProperties)) { log.warn("There is no configuration properties found"); return; } - ApplicationEventMulticaster eventMulticaster = createEventMulticaster(application); + ConcurrentEventMulticaster eventMulticaster = createEventMulticaster(application.getListeners()); ApolloProperties apolloProperties = ApolloProperties.get(environment); @@ -71,20 +76,23 @@ class ConfigurablePropertiesLoader { log.warn("No configuration properties loaded under namespace: " + namespace); return; } - ConfigUtils.resolvePlaceHolders(environment, propertySource); - // early add to environment to support properties bind compositePropertySource.addPropertySource(propertySource); - - ConfigurableProperties boundProperties = properties.bind(environment); - eventMulticaster.multicastEvent(new PropertiesPreparedEvent(environment, deferredLogFactory, propertySource, boundProperties, application)); + // resolve any placeHolders + ConfigUtils.resolvePlaceHolders(environment, propertySource); + // multicast event + eventMulticaster.multicastEvent(createEvent(propertySource, properties)); }); } - private ApplicationEventMulticaster createEventMulticaster(SpringApplication application) { - SimpleApplicationEventMulticaster eventMulticaster = new SimpleApplicationEventMulticaster(); - eventMulticaster.setTaskExecutor(GlobalThreadPool.getExecutor()); - for (ApplicationListener listener : application.getListeners()) { + private PropertiesPreparedEvent createEvent(OrderedMapPropertySource propertySource, ConfigurableProperties properties) { + ConfigurableProperties boundProperties = properties.bind(environment); + return new PropertiesPreparedEvent(environment, deferredLogFactory, propertySource, boundProperties, application); + } + + private ConcurrentEventMulticaster createEventMulticaster(Set> listeners) { + ConcurrentEventMulticaster eventMulticaster = new ConcurrentEventMulticaster(); + for (ApplicationListener listener : listeners) { if (ClassUtils.isAssignableValue(PropertiesPreparedEventListener.class, listener)) { eventMulticaster.addApplicationListener(listener); } diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/ConcurrentEventMulticaster.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/ConcurrentEventMulticaster.java new file mode 100644 index 0000000000000000000000000000000000000000..e4c6cd3e03b91fd9c5a4cdec411c39d3a4e3cf35 --- /dev/null +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/ConcurrentEventMulticaster.java @@ -0,0 +1,36 @@ +package com.schbrain.framework.autoconfigure.apollo.event; + +import cn.hutool.core.thread.GlobalThreadPool; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.AbstractApplicationEventMulticaster; +import org.springframework.context.event.SimpleApplicationEventMulticaster; +import org.springframework.core.ResolvableType; +import org.springframework.scheduling.support.TaskUtils; + +import java.util.Collection; +import java.util.concurrent.Executor; + +/** + * expose {@link AbstractApplicationEventMulticaster#getApplicationListeners(ApplicationEvent, ResolvableType)} + * + * @author liaozan + * @since 2023-05-06 + */ +public class ConcurrentEventMulticaster extends SimpleApplicationEventMulticaster { + + public ConcurrentEventMulticaster() { + this(GlobalThreadPool.getExecutor()); + } + + public ConcurrentEventMulticaster(Executor executor) { + setTaskExecutor(executor); + setErrorHandler(TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER); + } + + @Override + public Collection> getApplicationListeners() { + return super.getApplicationListeners(); + } + +} \ No newline at end of file diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEvent.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/PropertiesPreparedEvent.java similarity index 95% rename from starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEvent.java rename to starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/PropertiesPreparedEvent.java index b422726affd3e494b707152ee8608f45d9c2cfd0..257322438ef358820e0e6eca25b6c9731dbdaac5 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEvent.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/PropertiesPreparedEvent.java @@ -1,4 +1,4 @@ -package com.schbrain.framework.autoconfigure.apollo.listener; +package com.schbrain.framework.autoconfigure.apollo.event; import com.schbrain.common.util.properties.OrderedMapPropertySource; import com.schbrain.common.util.support.ConfigurableProperties; diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericPropertiesPreparedEventListener.java similarity index 87% rename from starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java rename to starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericPropertiesPreparedEventListener.java index dd066d7fd6c9673dea464405ca4cd9c5a1919bdc..47db5b2b5050fc7f4a916a7cf9d1200c9f0c67f3 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericPropertiesPreparedEventListener.java @@ -1,6 +1,7 @@ -package com.schbrain.framework.autoconfigure.apollo.listener; +package com.schbrain.framework.autoconfigure.apollo.event.listener; import com.schbrain.common.util.support.ConfigurableProperties; +import com.schbrain.framework.autoconfigure.apollo.event.PropertiesPreparedEvent; import org.apache.commons.logging.Log; import org.springframework.core.ResolvableType; diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/PropertiesPreparedEventListener.java similarity index 70% rename from starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java rename to starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/PropertiesPreparedEventListener.java index 25ec1404f321df8887bec0baf4f3c101d2a42b4d..25a5d0a35c3b3fb0b33cc095942e0ec7b847c998 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/PropertiesPreparedEventListener.java @@ -1,5 +1,6 @@ -package com.schbrain.framework.autoconfigure.apollo.listener; +package com.schbrain.framework.autoconfigure.apollo.event.listener; +import com.schbrain.framework.autoconfigure.apollo.event.PropertiesPreparedEvent; import org.springframework.context.ApplicationListener; import org.springframework.core.Ordered; diff --git a/starters/cache-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/cache/properties/CacheProperties.java b/starters/cache-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/cache/properties/CacheProperties.java index f9994bb390b3a6ed6d4a412507244283b1944a8e..1478e5336864021cac07e12bb67a2f95ff02a9db 100644 --- a/starters/cache-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/cache/properties/CacheProperties.java +++ b/starters/cache-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/cache/properties/CacheProperties.java @@ -18,10 +18,12 @@ public class CacheProperties extends ConfigurableProperties { * cache prefix */ private String prefix; + /** * cache prefix delimiter */ private String delimiter = ":"; + /** * whatever to enable prefix append */ diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java index b54344b18439510c92b39e4d22bd7c397d6c2573..d422b4140ab36c030a1a06718b0903403aec1af6 100644 --- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java +++ b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java @@ -3,8 +3,8 @@ package com.schbrain.framework.autoconfigure.dubbo.listener; import com.alibaba.fastjson2.JSONFactory; import com.google.common.collect.Maps; import com.schbrain.common.util.ApplicationName; -import com.schbrain.framework.autoconfigure.apollo.listener.GenericPropertiesPreparedEventListener; -import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEvent; +import com.schbrain.framework.autoconfigure.apollo.event.PropertiesPreparedEvent; +import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericPropertiesPreparedEventListener; import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties; import org.apache.dubbo.config.bootstrap.DubboBootstrap; import org.apache.dubbo.config.spring.ConfigCenterBean; diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java index 10e38e2705d051856e30364916f9d09fb371f01b..95cdd8c240092a11dc988f8dfacee0a46689d8fe 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java @@ -7,7 +7,8 @@ import ch.qos.logback.core.*; import ch.qos.logback.core.rolling.RollingFileAppender; import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; import cn.hutool.json.JSONObject; -import com.schbrain.common.util.*; +import com.schbrain.common.util.ApplicationName; +import com.schbrain.common.util.EnvUtils; import com.schbrain.common.util.InetUtils.HostInfo; import com.schbrain.framework.autoconfigure.logger.logstash.EnhancedLogstashEncoder; import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; @@ -36,12 +37,17 @@ import java.util.List; public class LoggerConfigurationInitializer { private final ConfigurableEnvironment environment; + private final LoggerProperties properties; + + private final HostInfo hostInfo; + private final String applicationName; - public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties) { + public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) { this.environment = environment; this.properties = properties; + this.hostInfo = hostInfo; this.applicationName = ApplicationName.get(environment); this.init(); } @@ -114,7 +120,6 @@ public class LoggerConfigurationInitializer { } private String getCustomFields() { - HostInfo hostInfo = InetUtils.findFirstNonLoopBackHostInfo(); JSONObject customFields = new JSONObject(); customFields.set("appName", applicationName); customFields.set("hostName", hostInfo.getHostname()); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java index a0f3b7d52d7dc1e910f854d8ee913fe557be9bea..ec689ead102c81b273b54040f60931ae0f9d0dc4 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java @@ -8,8 +8,8 @@ import com.ctrip.framework.apollo.core.enums.ConfigFileFormat; import com.google.common.collect.Maps; import com.schbrain.common.util.InetUtils; import com.schbrain.common.util.InetUtils.HostInfo; -import com.schbrain.framework.autoconfigure.apollo.listener.GenericPropertiesPreparedEventListener; -import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEvent; +import com.schbrain.framework.autoconfigure.apollo.event.PropertiesPreparedEvent; +import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericPropertiesPreparedEventListener; import com.schbrain.framework.autoconfigure.logger.LoggerConfigurationInitializer; import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; import org.springframework.core.env.ConfigurableEnvironment; @@ -30,14 +30,17 @@ public class LoggerPropertiesPreparedEventListener extends GenericPropertiesPrep @Override protected void onPropertiesPrepared(PropertiesPreparedEvent event, LoggerProperties properties) { ConfigurableEnvironment environment = event.getEnvironment(); - Map hostInfoProperties = buildHostInfoProperties(); + HostInfo hostInfo = InetUtils.findFirstNonLoopBackHostInfo(); + Map hostInfoProperties = buildHostInfoProperties(hostInfo); event.getPropertySource().addProperties(hostInfoProperties); configLoggingFileLocation(environment, properties.getLogConfigNamespace()); - new LoggerConfigurationInitializer(environment, properties).init(); + new LoggerConfigurationInitializer(environment, properties, hostInfo).init(); } - private Map buildHostInfoProperties() { - HostInfo hostInfo = InetUtils.findFirstNonLoopBackHostInfo(); + /** + * hostInfo properties, for logging pattern + */ + private Map buildHostInfoProperties(HostInfo hostInfo) { Map properties = Maps.newHashMapWithExpectedSize(2); properties.put("application.hostname", hostInfo.getHostname()); properties.put("application.ipAddress", hostInfo.getIpAddress()); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/logstash/EventDateStringValueJsonProvider.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/logstash/EventDateStringValueJsonProvider.java index ffed3d78af73b2fa87852ba2d549490ff7bf3371..d3951112c291f05fecca2a70ffbb5ec7b011c689 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/logstash/EventDateStringValueJsonProvider.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/logstash/EventDateStringValueJsonProvider.java @@ -3,12 +3,12 @@ package com.schbrain.framework.autoconfigure.logger.logstash; import ch.qos.logback.classic.spi.ILoggingEvent; import cn.hutool.core.date.LocalDateTimeUtil; import com.fasterxml.jackson.core.JsonGenerator; +import com.schbrain.common.constants.DateTimeFormatters; import net.logstash.logback.composite.AbstractFieldJsonProvider; import net.logstash.logback.composite.JsonWritingUtils; import java.io.IOException; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; /** * @author liaozan @@ -16,8 +16,7 @@ import java.time.format.DateTimeFormatter; */ public class EventDateStringValueJsonProvider extends AbstractFieldJsonProvider { - public static final String FIELD_EVENT_DATE = "eventDate"; - private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy.MM.dd"); + private static final String FIELD_EVENT_DATE = "eventDate"; public EventDateStringValueJsonProvider() { setFieldName(FIELD_EVENT_DATE); @@ -30,7 +29,7 @@ public class EventDateStringValueJsonProvider extends AbstractFieldJsonProvider< private String getEventDate(ILoggingEvent event) { LocalDateTime eventTime = LocalDateTimeUtil.of(event.getTimeStamp()); - return DATE_TIME_FORMATTER.format(eventTime); + return DateTimeFormatters.DATE_WITH_DOT.format(eventTime); } -} +} \ No newline at end of file diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constant/MybatisConstants.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constant/MybatisConstants.java index 9da9a92c0a2dc98d4b416a705d3c9e3c48da4f14..db45522f64b6770756b3432f2d2f1ec287d5f3da 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constant/MybatisConstants.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constant/MybatisConstants.java @@ -10,30 +10,37 @@ public class MybatisConstants { * 主键 */ public static final String ID = "id"; + /** * 创建时间 */ public static final String CREATE_TIME = "create_time"; + /** * 修改时间 */ public static final String MODIFY_TIME = "modify_time"; + /** * 是否删除 */ public static final String DELETED = "deleted"; + /** * 删除版本 */ public static final String DELETE_VERSION = "delete_version"; + /** * 当前时间戳 */ public static final String CURRENT_TIMESTAMP = "current_timestamp"; + /** * 自增 */ public static final String AUTO_INCREMENT = "auto_increment"; + /** * 更新为当前时间戳 */ diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/ColumnMeta.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/ColumnMeta.java index 469474cbec77be4f6c2baec9d06783000d5fcff9..797b3703e9056b78c2565f4003bf8b07884c1be3 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/ColumnMeta.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/ColumnMeta.java @@ -13,22 +13,27 @@ public class ColumnMeta { * 表名 */ private String tableName; + /** * 列名 */ private String columnName; + /** * 数据类型 */ private String dataType; + /** * 是否允许为空 */ private boolean nullable; + /** * 列默认值 */ private String columnDefault; + /** * 扩展信息 */ diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/Table.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/Table.java index 2e25cf5f32ec213d75e633d1e52b534e3454aaf8..992002e6f77947b4c4ebcfe1336755d6d6e5981a 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/Table.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/constraint/Table.java @@ -59,6 +59,7 @@ public class Table { public static class FieldInfo { private String field; + private String column; public FieldInfo(TableFieldInfo tableFieldInfo) { diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java index a05023b98d414f2672535c0f85ed36538f1f45c7..0b662e566de2058da8ce00dbb2ed8e6e68b1a228 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java @@ -19,6 +19,7 @@ public class DataSourceConnectionPostProcessor extends GenericBeanPostProcessor< // use ObjectProvider to avoid early initialization beans private final ObjectProvider customizers; + private final ObjectProvider connectionProperties; public DataSourceConnectionPostProcessor(ObjectProvider customizers, diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/DataSourceConnectionProperties.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/DataSourceConnectionProperties.java index b654bc801ed8fe17863781acf0f68de5131d3b2c..df78fc48ccf6f354153b6fbbbe3e10e1920a3c37 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/DataSourceConnectionProperties.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/DataSourceConnectionProperties.java @@ -22,30 +22,37 @@ public class DataSourceConnectionProperties { * 使用 ssl 连接 */ private Boolean useSsl = false; + /** * tinyint(1) 视为 boolean */ private Boolean tinyInt1isBit = true; + /** * 重写批处理sql */ private Boolean rewriteBatchedStatements = true; + /** * 是否允许一个 statement 用分号分割执行多个查询语句 */ private Boolean allowMultiQueries = true; + /** * 允许从服务端获取公钥进行连接 */ private Boolean allowPublicKeyRetrieval = true; + /** * 连接数据库使用的时区 */ private ZoneId serverTimeZone = ZoneId.systemDefault(); + /** * 时间格式字段值为 0 的时候的处理方式 */ private ZeroDatetimeBehavior zeroDatetimeBehavior = ZeroDatetimeBehavior.CONVERT_TO_NULL; + /** * 数据库连接字符编码 */ diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/MybatisProperties.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/MybatisProperties.java index 1a5aa5831cf4e802f7e31952ffa7374239db5c51..0853d4602212b16bd8fd44edcf65fedae0b0d78d 100644 --- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/MybatisProperties.java +++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/properties/MybatisProperties.java @@ -18,14 +18,17 @@ public class MybatisProperties extends ConfigurableProperties { * 分页拦截器 */ private boolean addPageInterceptor = true; + /** * 阻断全表更新操作,禁止不带 where 更新,删除 */ private boolean addBlockAttackInterceptor = true; + /** * 是否开启表约束检查 */ private boolean enableTableConstraintCheck = true; + /** * Instant 转为 long */ diff --git a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/OssOperationResult.java b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/OssOperationResult.java index 9de1ce1efbb69d9559921c2a4ea9e6293be59c6d..7d47e5ab8dedc6defd1dce8d4c2da9289c750e6c 100644 --- a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/OssOperationResult.java +++ b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/OssOperationResult.java @@ -14,12 +14,15 @@ public class OssOperationResult implements Serializable { private static final long serialVersionUID = 3651584115463313214L; protected boolean success; + protected String bucket; + protected String objectKey; + protected String errorMsg; public boolean isFailed() { - return !success; + return Boolean.FALSE.equals(success); } } \ No newline at end of file diff --git a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/UploadCredentials.java b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/UploadCredentials.java index 34de5fe849d61b09c5bba8983e3f69dbf447bf7f..3bc6c4f34908c2a2ee291b1031a40132f7c175d2 100644 --- a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/UploadCredentials.java +++ b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/bean/UploadCredentials.java @@ -18,8 +18,11 @@ public class UploadCredentials extends OssOperationResult { private static final long serialVersionUID = 5546792221041679671L; private String accessKeyId; + private String accessKeySecret; + private String securityToken; + private LocalDateTime expiration; // for json deserialize diff --git a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java index a7472736c56698d937390efc799128bb8bfa976a..1f8560fc188c02ce7d55fd5489ec4818dcb16ca3 100644 --- a/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java +++ b/starters/oss-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/oss/util/OssUtils.java @@ -42,9 +42,13 @@ import java.util.stream.Collectors; public class OssUtils { private static OSSClient ossClient; + private static DefaultAcsClient stsAcsClient; + private static OssProperties ossProperties; + private static StsProperties stsProperties; + private static String directory; public static void initialize(OssProperties properties) { diff --git a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapper.java b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapper.java index dbd299d84ef1df63541b9beae9396df787ff518d..cc9b64dd723a51cf76c6066a76e9785d0e63598d 100644 --- a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapper.java +++ b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapper.java @@ -22,9 +22,13 @@ public class BaseMapper { private final SqlSessionTemplate sqlSession; private final Class mapperInterface; + private final BaseMapperStatement bms; + private Class domainClass; + private String tableName; + private Field[] fields; public BaseMapper(SqlSessionTemplate sqlSession, Class mapperInterface) { diff --git a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapperStatement.java b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapperStatement.java index f88f69717bbe199a82db81540ab7cecb7a94015a..f7a1c14790071c793a8fb3e1b91ac3352dc64f30 100644 --- a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapperStatement.java +++ b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/BaseMapperStatement.java @@ -38,9 +38,13 @@ public class BaseMapperStatement { private final Class domainClass; private final Field[] fields; + private final List objectResultMapList = new ArrayList<>(1); + private final List intResultMapList = new ArrayList<>(1); + private String selectClause; + private String insertClause; public BaseMapperStatement(Configuration configuration, Class mapperInterface, Class domainClass, String tableName, Field[] fields) { diff --git a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/sqlsource/AbstractSqlSource.java b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/sqlsource/AbstractSqlSource.java index ca7da30ea9c98888d14b2dd8065ef626fd97853f..e10a3404d5a56ab6f9ebf185ff1fcda3687c8e1d 100644 --- a/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/sqlsource/AbstractSqlSource.java +++ b/support/schbrain-base-dao/src/main/java/com/schbrain/framework/dao/mybatis/mapper/sqlsource/AbstractSqlSource.java @@ -20,7 +20,9 @@ import java.util.regex.Pattern; public abstract class AbstractSqlSource implements SqlSource { private static final String GENERIC_PARAM_NAME = "param"; + private static final Pattern pattern = Pattern.compile("#\\{.+?}"); + protected final Configuration configuration; protected AbstractSqlSource(Configuration configuration) { diff --git a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/LoggerAwareEnvironmentPostProcessor.java b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/LoggerAwareEnvironmentPostProcessor.java index d10721719f9e790627835a1f6aa06dfba14ee800..078f7cf8da0df5187080f72ae4fb965428a93f06 100644 --- a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/LoggerAwareEnvironmentPostProcessor.java +++ b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/LoggerAwareEnvironmentPostProcessor.java @@ -2,11 +2,10 @@ package com.schbrain.framework.support.spring; import lombok.Getter; import org.apache.commons.logging.Log; -import org.springframework.boot.BootstrapContext; +import org.springframework.boot.BootstrapContextClosedEvent; import org.springframework.boot.ConfigurableBootstrapContext; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.boot.logging.DeferredLogFactory; -import org.springframework.context.ConfigurableApplicationContext; /** * @author liaozan @@ -16,17 +15,19 @@ import org.springframework.context.ConfigurableApplicationContext; public abstract class LoggerAwareEnvironmentPostProcessor implements EnvironmentPostProcessor { protected final Log log; + protected final DeferredLogFactory deferredLogFactory; + protected final ConfigurableBootstrapContext bootstrapContext; public LoggerAwareEnvironmentPostProcessor(DeferredLogFactory logFactory, ConfigurableBootstrapContext bootstrapContext) { this.log = logFactory.getLog(getClass()); this.bootstrapContext = bootstrapContext; this.deferredLogFactory = logFactory; - this.bootstrapContext.addCloseListener(event -> onBootstrapContextClose(event.getBootstrapContext(), event.getApplicationContext())); + this.bootstrapContext.addCloseListener(this::onBootstrapContextClose); } - protected void onBootstrapContextClose(BootstrapContext bootstrapContext, ConfigurableApplicationContext applicationContext) { + protected void onBootstrapContextClose(BootstrapContextClosedEvent event) { } diff --git a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/defaults/DefaultPropertiesEnvironmentPostProcessor.java b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/defaults/DefaultPropertiesEnvironmentPostProcessor.java index 440c8476cd4dca5722d75d98daba1f997b236e87..a24d15f3a1455258bc31f038177fdf0a9889eab0 100644 --- a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/defaults/DefaultPropertiesEnvironmentPostProcessor.java +++ b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/defaults/DefaultPropertiesEnvironmentPostProcessor.java @@ -31,6 +31,7 @@ public class DefaultPropertiesEnvironmentPostProcessor extends LoggerAwareEnviro public static final Integer DEFAULT_ORDER = ConfigDataEnvironmentPostProcessor.ORDER + 1; private static final String SPRING_PROFILE_ACTIVE = "spring.profiles.active"; + private static final String DUBBO_REGISTER_KEY = "dubbo.registry.register"; public DefaultPropertiesEnvironmentPostProcessor(DeferredLogFactory logFactory, ConfigurableBootstrapContext bootstrapContext) {