ClearingRuntimeException

This commit is contained in:
ialbert 2025-06-27 17:24:38 +03:00
parent c341878e54
commit d600ddfb52
2 changed files with 44 additions and 2 deletions

View file

@ -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;
}
}

View file

@ -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<TaskType, SsnEvent> {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Session> 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);