company-service: RequestHelper to spring bean

This commit is contained in:
akulikov 2023-04-07 10:55:02 +03:00
parent 28f47e8ebd
commit 3fcf40d94a
5 changed files with 39 additions and 18 deletions

View file

@ -1,7 +1,10 @@
package ru.spcex.clearing.company.config; package ru.spcex.clearing.company.config;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import ru.spcex.clearing.company.util.RequestHelper;
import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.security.UserRoleVerification;
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.enumeration.IMessageResolver;
@ -18,4 +21,11 @@ public class BeanConfiguration {
UserRoleVerification userRoleVerification(ImdgProvider imdg) { UserRoleVerification userRoleVerification(ImdgProvider imdg) {
return new UserRoleVerification(imdg); return new UserRoleVerification(imdg);
} }
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public RequestHelper requestHelper(IMessageResolver messageResolver) {
return new RequestHelper(messageResolver);
}
} }

View file

@ -23,7 +23,6 @@ import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.enumeration.UserRole;
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.error.ValidationException; import ru.spcex.platform.utils.error.ValidationException;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
@ -43,7 +42,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
@Autowired @Autowired
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider, CompanyService companyService, ImdgProvider imdgProvider, CompanyService companyService,
IMessageResolver messageResolver, ValidationHelper validationHelper, RequestHelper requestHelper, ValidationHelper validationHelper,
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
@Qualifier("CompanyInfoUpdateRequestValidator") @Qualifier("CompanyInfoUpdateRequestValidator")
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) { Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
@ -52,8 +51,8 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.validationHelper = validationHelper; this.validationHelper = validationHelper;
this.userRoleVerification = userRoleVerification; this.userRoleVerification = userRoleVerification;
this.requestHelper = new RequestHelper(log, messageResolver);
this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator; this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator;
this.requestHelper = requestHelper.setLogger(log);
} }
@Override @Override

View file

@ -6,7 +6,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.CompanyRoleSet; import ru.clearing.classes.statics.data.company.CompanyRoleSet;
import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.company.error.CompanyErrors;
@ -26,7 +25,6 @@ import ru.spcex.platform.imdg.api.ImdgId;
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.enumeration.IMessageResolver;
import ru.spcex.platform.utils.error.ValidationException; import ru.spcex.platform.utils.error.ValidationException;
import ru.spcex.platform.utils.validation.IValidator;
import java.util.Map; import java.util.Map;
@ -49,7 +47,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
@Autowired @Autowired
public CompanyRoleSetService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public CompanyRoleSetService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider, ImdgProvider imdgProvider,
IMessageResolver messageResolver, RequestHelper requestHelper,
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
ValidationHelper validationHelper ValidationHelper validationHelper
// @Qualifier("CompanyRoleSetRequestValidator") // @Qualifier("CompanyRoleSetRequestValidator")
@ -58,12 +56,12 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.messageResolver = messageResolver; this.messageResolver = messageResolver;
this.requestHelper = new RequestHelper(log, messageResolver);
this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
this.idSequence = imdgProvider.getImdgIdGenerator(); this.idSequence = imdgProvider.getImdgIdGenerator();
this.userRoleVerification = userRoleVerification; this.userRoleVerification = userRoleVerification;
this.validationHelper = validationHelper; this.validationHelper = validationHelper;
// this.companyDeleteRequestValidator = companyDeleteRequestValidator; // this.companyDeleteRequestValidator = companyDeleteRequestValidator;
this.requestHelper = requestHelper.setLogger(log);
} }
@Override @Override

View file

@ -21,7 +21,9 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.*; import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.enumeration.UserRole;
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.ImdgId; import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
@ -58,7 +60,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
@Autowired @Autowired
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider, ImdgProvider imdgProvider,
IMessageResolver messageResolver, RequestHelper requestHelper,
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
ValidationHelper validationHelper, ValidationHelper validationHelper,
@Qualifier("companyNewRequestValidator") @Qualifier("companyNewRequestValidator")
@ -74,8 +76,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
) { ) {
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.messageResolver = messageResolver; this.requestHelper = requestHelper.setLogger(log);
this.requestHelper = new RequestHelper(log, messageResolver);
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
this.idSequence = imdgProvider.getImdgIdGenerator(); this.idSequence = imdgProvider.getImdgIdGenerator();

View file

@ -6,7 +6,6 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IEnumId;
import ru.spcex.platform.utils.enumeration.IErrorEnumId; import ru.spcex.platform.utils.enumeration.IErrorEnumId;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.error.ClearingBaseException; import ru.spcex.platform.utils.error.ClearingBaseException;
@ -16,7 +15,7 @@ import java.util.Objects;
/** /**
* Упрощает обработку ошибок во время обработки реквестов. * Упрощает обработку ошибок во время обработки реквестов.
* Передаёт регламинтированные ошибки из ClearingBaseException. * Передаёт регламентированные ошибки из ClearingBaseException.
* *
* Пример: * Пример:
* callback(CompanyNewRequest.class) * callback(CompanyNewRequest.class)
@ -24,9 +23,14 @@ import java.util.Objects;
* .forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put); * .forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put);
*/ */
public class RequestHelper { public class RequestHelper {
protected final Logger log; protected Logger log = null;
protected final IMessageResolver messageResolver; protected final IMessageResolver messageResolver;
public RequestHelper(IMessageResolver messageResolver) {
Objects.requireNonNull(messageResolver);
this.messageResolver = messageResolver;
}
public RequestHelper(Logger log, IMessageResolver messageResolver) { public RequestHelper(Logger log, IMessageResolver messageResolver) {
Objects.requireNonNull(log); Objects.requireNonNull(log);
Objects.requireNonNull(messageResolver); Objects.requireNonNull(messageResolver);
@ -44,12 +48,15 @@ public class RequestHelper {
*/ */
public <X, T extends BaseRequest<X>> RequestInfoUpdate requestFunction(RequestCommand<T> command, T userRequest) { public <X, T extends BaseRequest<X>> RequestInfoUpdate requestFunction(RequestCommand<T> command, T userRequest) {
try { try {
log.debug("{} request received, BaseRequest.id = {}", userRequest.getClass().getSimpleName(), userRequest.getId()); if (log != null)
log.debug("{} request received, BaseRequest.id = {}", userRequest.getClass().getSimpleName(), userRequest.getId());
RequestInfoUpdate reply = command.command(userRequest); RequestInfoUpdate reply = command.command(userRequest);
log.trace("Reply on request {}: {}" , userRequest.getId(), reply); if (log != null)
log.trace("Reply on request {}: {}" , userRequest.getId(), reply);
return reply; return reply;
} catch (ClearingBaseException expectedE) { } catch (ClearingBaseException expectedE) {
log.trace("{} return expected exception: {}", command, expectedE.toString()); if (log != null)
log.trace("{} return expected exception: {}", command, expectedE.toString());
String message = expectedE.getEnumMsg() == null String message = expectedE.getEnumMsg() == null
? expectedE.getMessage() ? expectedE.getMessage()
: messageResolver.resolve(expectedE.getEnumMsg()); : messageResolver.resolve(expectedE.getEnumMsg());
@ -58,7 +65,8 @@ public class RequestHelper {
.setStatus(Status.Error) .setStatus(Status.Error)
.setMessage(message); .setMessage(message);
} catch (Exception unexpectedE) { } catch (Exception unexpectedE) {
log.error("Error at {}: {} ", command, ExceptionUtils.getStackTrace(unexpectedE)); if (log != null)
log.error("Error at {}: {} ", command, ExceptionUtils.getStackTrace(unexpectedE));
String message = messageResolver.resolve(new EnumMessage(CompanyErrors.GeneralError)); String message = messageResolver.resolve(new EnumMessage(CompanyErrors.GeneralError));
return new RequestInfoUpdate() return new RequestInfoUpdate()
.setId(userRequest.getId()) .setId(userRequest.getId())
@ -83,4 +91,9 @@ public class RequestHelper {
public interface RequestCommand<T> { public interface RequestCommand<T> {
RequestInfoUpdate command(T arg) throws ClearingBaseException; RequestInfoUpdate command(T arg) throws ClearingBaseException;
} }
public RequestHelper setLogger(Logger log) {
this.log = log;
return this;
}
} }