diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingRuntimeException.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingRuntimeException.java new file mode 100644 index 000000000..204ce5754 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingRuntimeException.java @@ -0,0 +1,34 @@ +package ru.spcex.clearing.error; + +import ru.spcex.platform.utils.enumeration.EnumMessage; + +public class ClearingRuntimeException extends RuntimeException { + final EnumMessage enumMsg; + + public ClearingRuntimeException(EnumMessage msg) { + this.enumMsg = msg; + } + + public ClearingRuntimeException(ClearingError code) { + this.enumMsg = new EnumMessage(code); + } + + public ClearingRuntimeException(ClearingError code, String message) { + super(code == null ? message : code.getId() + " " + message); + this.enumMsg = new EnumMessage(code); + } + + public ClearingRuntimeException(ClearingError code, String message, Throwable cause) { + super(code == null ? message : code.getId() + " " + message, cause); + this.enumMsg = new EnumMessage(code); + } + + public ClearingRuntimeException(String message, Throwable cause) { + super(message, cause); + this.enumMsg = new EnumMessage(ClearingError.GeneralError); + } + + public EnumMessage getEnumMsg() { + return enumMsg; + } +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/interceptor/SessionStatusChangingInterceptor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/interceptor/SessionStatusChangingInterceptor.java index 65a1926c5..c3a64147f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/interceptor/SessionStatusChangingInterceptor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/interceptor/SessionStatusChangingInterceptor.java @@ -10,6 +10,7 @@ import org.springframework.statemachine.state.State; import org.springframework.statemachine.support.StateMachineInterceptorAdapter; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.misc.Session; +import ru.spcex.clearing.error.ClearingRuntimeException; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.session.stage.SecondaryAuctionT0Session; import ru.spcex.clearing.session.stage.TaskType; @@ -20,6 +21,7 @@ import ru.spcex.platform.enumeration.SessionStatus; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.log.ExceptionUtils; /** @@ -29,10 +31,12 @@ import ru.spcex.platform.utils.log.ExceptionUtils; public class SessionStatusChangingInterceptor extends StateMachineInterceptorAdapter { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg ssnImdg; + private final IMessageResolver messageResolver; @Autowired - public SessionStatusChangingInterceptor(ImdgProvider imdgProvider, SecondaryAuctionT0Session secondaryAuctionT0Session) { + public SessionStatusChangingInterceptor(ImdgProvider imdgProvider, SecondaryAuctionT0Session secondaryAuctionT0Session, IMessageResolver messageResolver) { this.ssnImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.messageResolver = messageResolver; } @@ -87,7 +91,11 @@ public class SessionStatusChangingInterceptor extends StateMachineInterceptorAda Exception exception ) { String id = StateMachineUtil.getId(stM); - log.error("{} interceptor caught an exception!!!", id); + if (exception instanceof ClearingRuntimeException withEnum) { + log.error("{} interceptor caught an error {}", id, messageResolver.resolve(withEnum.getEnumMsg())); + } else { + log.error("{} interceptor caught an exception", id); + } Session session = stM.getExtendedState().get(DataEnum.session, Session.class); if (session != null) { log.info("{} updating session status to error", id);