added message resolver to utils

This commit is contained in:
ialbert 2022-09-21 18:40:06 +03:00
parent f72d7ff8e2
commit 7fc4e66043
3 changed files with 33 additions and 8 deletions

View file

@ -1,8 +1,11 @@
package ru.spcex.clearing.backendapi.config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.enumeration.SpringPropertiesMessageResolver;
import java.util.Locale;
@ -17,4 +20,9 @@ public class MessagesConfig {
source.setDefaultLocale(Locale.ROOT);
return source;
}
@Bean("errorResolver")
public IMessageResolver errorResolver(@Qualifier("validation-error-messages") ResourceBundleMessageSource messageBundle) {
return new SpringPropertiesMessageResolver(messageBundle);
}
}

View file

@ -19,4 +19,12 @@
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View file

@ -1,24 +1,33 @@
package ru.spcex.clearing.backendapi.errors;
package ru.spcex.platform.utils.enumeration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.stereotype.Service;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.util.Locale;
@Service("errorResolver")
public class ErrorResolver implements IMessageResolver {
/**
* Если в зависимостях не будет spring-context, кинет NoClassDefFound
*/
public class SpringPropertiesMessageResolver implements IMessageResolver {
private final ResourceBundleMessageSource errorMessages;
private Locale locale;
public ErrorResolver(ResourceBundleMessageSource errorMessages) {
public SpringPropertiesMessageResolver(ResourceBundleMessageSource errorMessages) {
this.errorMessages = errorMessages;
this.locale = Locale.ENGLISH;
}
public void setLocale(String locale) {
this.locale = new Locale(locale);
}
public void setLocale(Locale locale) {
this.locale = locale;
}
@Override
public String resolve(EnumMessage errorMessage) {
Long id = errorMessage.getSubject().getId();
String messageTemplate = errorMessages.getMessage(id.toString(), null, Locale.ENGLISH);
String messageTemplate = errorMessages.getMessage(id.toString(), null, locale);
if (errorMessage.getArgs().length > 0)
return String.format(messageTemplate, errorMessage.getArgs());
else {