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.statemachine.support.StateMachineInterceptorAdapter;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.misc.Session;
import ru.spcex.clearing.error.ClearingRuntimeException;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.session.stage.SecondaryAuctionT0Session; import ru.spcex.clearing.session.stage.SecondaryAuctionT0Session;
import ru.spcex.clearing.session.stage.TaskType; 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.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.log.ExceptionUtils; 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> { public class SessionStatusChangingInterceptor extends StateMachineInterceptorAdapter<TaskType, SsnEvent> {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Session> ssnImdg; private final Imdg<Session> ssnImdg;
private final IMessageResolver messageResolver;
@Autowired @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.ssnImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.messageResolver = messageResolver;
} }
@ -87,7 +91,11 @@ public class SessionStatusChangingInterceptor extends StateMachineInterceptorAda
Exception exception Exception exception
) { ) {
String id = StateMachineUtil.getId(stM); 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); Session session = stM.getExtendedState().get(DataEnum.session, Session.class);
if (session != null) { if (session != null) {
log.info("{} updating session status to error", id); log.info("{} updating session status to error", id);