From cdf352f81333f85d65bb517810bd53c42bf6a07d Mon Sep 17 00:00:00 2001 From: dwe Date: Mon, 12 Dec 2022 14:56:41 +0100 Subject: [PATCH 1/2] feat: bump versions; support spring framework 6 spring boot 3; remove quava ifo vanilla java; update pom dependencies --- pom.xml | 81 ++++++++++++------- ...ustacheLocalizationMessageInterceptor.java | 33 +++----- .../servlet/view/mustache/MustacheView.java | 12 +-- .../view/mustache/MustacheViewResolver.java | 12 +-- .../java/LocalizationMessageInterceptor.java | 23 +++--- .../java/MustacheJTemplateFactory.java | 12 +-- .../jmustache/JMustacheTemplateFactory.java | 4 +- .../jmustache/JMustacheTemplateLoader.java | 11 +-- .../LocalizationMessageInterceptor.java | 4 +- .../mustache/MustacheViewResolverTest.java | 7 +- .../view/mustache/MustacheViewTest.java | 6 +- .../LocalizationMessageInterceptorTest.java | 10 +-- .../java/MustacheJTemplateFactoryTest.java | 4 +- .../mustache/java/MustacheJTemplateTest.java | 2 +- .../JMustacheTemplateFactoryTest.java | 2 +- .../JMustacheTemplateLoaderTest.java | 4 +- .../jmustache/JMustacheTemplateTest.java | 2 +- .../LocalizationMessageInterceptorTest.java | 8 +- 18 files changed, 114 insertions(+), 123 deletions(-) diff --git a/pom.xml b/pom.xml index 072e15c..f60ac97 100644 --- a/pom.xml +++ b/pom.xml @@ -34,12 +34,12 @@ - 4.0.3.RELEASE - 1.9 - 0.8.14 - 1.9.0 - 4.11 - 1.5 + 6.0.2 + 1.15 + 0.9.10 + 4.9.0 + 4.13.2 + 17 @@ -56,7 +56,7 @@ maven-compiler-plugin - 2.3.2 + 3.10.1 ${jdk.version} ${jdk.version} @@ -80,27 +80,48 @@ + + + + + + + + - org.codehaus.mojo - findbugs-maven-plugin - 3.0.4 - - Max - Default - true - - - - - check - - - + com.github.spotbugs + spotbugs-maven-plugin + 4.7.3.0 + + + + com.github.spotbugs + spotbugs + 4.7.3 + + + + + + + + + + + + + + + + + + + org.jacoco jacoco-maven-plugin - 0.7.0.201403182114 + 0.8.8 default-prepare-agent @@ -122,11 +143,11 @@ - + BUNDLE - + COMPLEXITY COVEREDRATIO @@ -201,14 +222,14 @@ provided - - javax.servlet - servlet-api - 2.4 + jakarta.servlet + jakarta.servlet-api + 6.0.0 provided + junit junit @@ -230,4 +251,4 @@ - + \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/i18n/MustacheLocalizationMessageInterceptor.java b/src/main/java/org/springframework/web/servlet/i18n/MustacheLocalizationMessageInterceptor.java index c8db26e..dd78e1a 100644 --- a/src/main/java/org/springframework/web/servlet/i18n/MustacheLocalizationMessageInterceptor.java +++ b/src/main/java/org/springframework/web/servlet/i18n/MustacheLocalizationMessageInterceptor.java @@ -1,12 +1,12 @@ /* * Copyright 2012 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -15,14 +15,14 @@ */ package org.springframework.web.servlet.i18n; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; @@ -37,25 +37,19 @@ *

* e.g. {{#i18n}}labels.global.mustache [arg1]...[argN]{{/i18n}} */ -public abstract class MustacheLocalizationMessageInterceptor extends HandlerInterceptorAdapter implements - MessageSourceAware { - +public abstract class MustacheLocalizationMessageInterceptor implements HandlerInterceptor, MessageSourceAware { /** * Default key to be used in message templates. *

* e.g. {{i18n}}internationalize.this.key.please{{/i18n}} */ public static final String DEFAULT_MODEL_KEY = "i18n"; - private static final Pattern KEY_PATTERN = Pattern.compile("(.*?)[\\s\\[]"); private static final Pattern ARGS_PATTERN = Pattern.compile("\\[(.*?)\\]"); - private String messageKey = DEFAULT_MODEL_KEY; - private MessageSource messageSource; private LocaleResolver localeResolver; - protected final void localize(final HttpServletRequest request, String frag, Writer out) throws IOException { final Locale locale = localeResolver.resolveLocale(request); final String key = extractKey(frag); @@ -66,19 +60,13 @@ protected final void localize(final HttpServletRequest request, String frag, Wri protected abstract Object createHelper(final HttpServletRequest request); - @Override - public void postHandle(final HttpServletRequest request, final HttpServletResponse response, - final Object handler, - final ModelAndView modelAndView) throws Exception { + public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final ModelAndView modelAndView) throws Exception { if (modelAndView != null) { modelAndView.addObject(messageKey, createHelper(request)); } - - super.postHandle(request, response, handler, modelAndView); } - /** * Split key from (optional) arguments. * @@ -90,7 +78,6 @@ private String extractKey(String key) { if (matcher.find()) { return matcher.group(1); } - return key; } @@ -132,6 +119,4 @@ public void setMessageSource(MessageSource messageSource) { public void setLocaleResolver(LocaleResolver localeResolver) { this.localeResolver = localeResolver; } - - -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/MustacheView.java b/src/main/java/org/springframework/web/servlet/view/mustache/MustacheView.java index b9c5cb3..c0ac9b8 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/MustacheView.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/MustacheView.java @@ -15,11 +15,8 @@ */ package org.springframework.web.servlet.view.mustache; -import com.samskivert.mustache.Template; import org.springframework.web.servlet.view.AbstractTemplateView; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.Writer; import java.util.Map; @@ -27,13 +24,9 @@ * @author Sean Scanlon */ public class MustacheView extends AbstractTemplateView { - private MustacheTemplate template; - @Override - protected void renderMergedTemplateModel(Map model, HttpServletRequest request, - HttpServletResponse response) throws Exception { - + protected void renderMergedTemplateModel(Map model, final jakarta.servlet.http.HttpServletRequest request, final jakarta.servlet.http.HttpServletResponse response) throws Exception { response.setContentType(getContentType()); final Writer writer = response.getWriter(); template.execute(model, writer); @@ -47,4 +40,5 @@ public void setTemplate(MustacheTemplate template) { public MustacheTemplate getTemplate() { return template; } -} + +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/MustacheViewResolver.java b/src/main/java/org/springframework/web/servlet/view/mustache/MustacheViewResolver.java index d2aa424..e8f3e50 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/MustacheViewResolver.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/MustacheViewResolver.java @@ -15,7 +15,6 @@ */ package org.springframework.web.servlet.view.mustache; -import org.springframework.beans.factory.annotation.Required; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.view.AbstractTemplateViewResolver; import org.springframework.web.servlet.view.AbstractUrlBasedView; @@ -25,9 +24,10 @@ */ public class MustacheViewResolver extends AbstractTemplateViewResolver implements ViewResolver { - private MustacheTemplateFactory templateFactory; + private final MustacheTemplateFactory templateFactory; - public MustacheViewResolver() { + public MustacheViewResolver(final MustacheTemplateFactory templateFactory) { + this.templateFactory = templateFactory; setViewClass(MustacheView.class); } @@ -47,8 +47,4 @@ protected AbstractUrlBasedView buildView(String viewName) throws Exception { return view; } - @Required - public void setTemplateFactory(MustacheTemplateFactory templateFactory) { - this.templateFactory = templateFactory; - } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptor.java b/src/main/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptor.java index e59231c..bd28261 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptor.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptor.java @@ -15,13 +15,12 @@ */ package org.springframework.web.servlet.view.mustache.java; -import com.google.common.base.Function; -import com.google.common.base.Throwables; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.servlet.i18n.MustacheLocalizationMessageInterceptor; -import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.StringWriter; +import java.util.function.Function; /** * @author Sean Scanlon @@ -30,16 +29,14 @@ public class LocalizationMessageInterceptor extends MustacheLocalizationMessageI @Override protected Object createHelper(final HttpServletRequest request) { - return new Function() { - public String apply(String input) { - final StringWriter out = new StringWriter(); - try { - localize(request, input, out); - } catch (IOException e) { - Throwables.propagate(e); - } - return out.toString(); + return (Function) input -> { + final StringWriter out = new StringWriter(); + try { + localize(request, input, out); + } catch (IOException e) { + throw new RuntimeException(e); } + return out.toString(); }; } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactory.java b/src/main/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactory.java index 37639b4..bcc76ee 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactory.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactory.java @@ -1,12 +1,12 @@ /* * Copyright 2011-2014 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -27,8 +27,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; +import java.util.Objects; -import static com.google.common.base.Objects.firstNonNull; import static java.lang.System.getProperty; /** @@ -46,7 +46,7 @@ public class MustacheJTemplateFactory extends DefaultMustacheFactory implements private ResourceLoader resourceLoader; private String prefix = ""; - private String encoding = firstNonNull(getProperty("mustache.template.encoding"), "UTF-8"); + private String encoding = Objects.requireNonNullElse(getProperty("mustache.template.encoding"), "UTF-8"); public void setSuffix(String suffix) { @@ -109,4 +109,4 @@ private String getFullyQualifiedResourceName(String resourceName) { } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactory.java b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactory.java index 704f884..2632ceb 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactory.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactory.java @@ -17,7 +17,6 @@ import com.samskivert.mustache.Mustache; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Required; import org.springframework.web.servlet.view.mustache.MustacheTemplate; import org.springframework.web.servlet.view.mustache.MustacheTemplateException; import org.springframework.web.servlet.view.mustache.MustacheTemplateFactory; @@ -68,7 +67,6 @@ public void setSuffix(String suffix) { this.suffix = suffix; } - @Required public void setTemplateLoader(JMustacheTemplateLoader templateLoader) { this.templateLoader = templateLoader; } @@ -101,4 +99,4 @@ public void setCompiler(Mustache.Compiler compiler) { this.compiler = compiler; } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoader.java b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoader.java index 3238182..260b9a6 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoader.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoader.java @@ -27,12 +27,14 @@ public class JMustacheTemplateLoader implements Mustache.TemplateLoader, ResourceLoaderAware { - private ResourceLoader resourceLoader; + private final ResourceLoader resourceLoader; private String prefix = ""; private String suffix = ""; + public JMustacheTemplateLoader(final ResourceLoader resourceLoader) {this.resourceLoader = resourceLoader;} + public void setPrefix(String prefix) { this.prefix = prefix; } @@ -56,8 +58,7 @@ public Reader getTemplate(String filename) throws Exception { throw new FileNotFoundException(filename); } - - public void setResourceLoader(ResourceLoader resourceLoader) { - this.resourceLoader = resourceLoader; + @Override + public void setResourceLoader(final ResourceLoader resourceLoader) { } -} +} \ No newline at end of file diff --git a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptor.java b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptor.java index cd335bf..c7f8907 100644 --- a/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptor.java +++ b/src/main/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptor.java @@ -17,9 +17,9 @@ import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.servlet.i18n.MustacheLocalizationMessageInterceptor; -import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.Writer; @@ -36,4 +36,4 @@ public void execute(Template.Fragment frag, Writer out) throws IOException { } }; } -} +} \ No newline at end of file diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewResolverTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewResolverTest.java index c4eb51a..098b1ed 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewResolverTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewResolverTest.java @@ -19,7 +19,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.doReturn; @@ -43,8 +43,7 @@ public class MustacheViewResolverTest { @Before public void setUp() throws Exception { - viewResolver = new MustacheViewResolver(); - viewResolver.setTemplateFactory(templateFactory); + viewResolver = new MustacheViewResolver(templateFactory); } @Test @@ -57,4 +56,4 @@ public void testBuildView() throws Exception { verify(templateFactory).getTemplate(viewName); } -} +} \ No newline at end of file diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewTest.java index 61550e5..324c3df 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/MustacheViewTest.java @@ -15,13 +15,13 @@ */ package org.springframework.web.servlet.view.mustache; +import jakarta.servlet.http.HttpServletResponse; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; -import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.Collections; import java.util.Map; @@ -68,4 +68,4 @@ public void testRenderMergedTemplateModel() throws Exception { assertEquals(template, view.getTemplate()); } -} +} \ No newline at end of file diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptorTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptorTest.java index 901222e..9683a05 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptorTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/java/LocalizationMessageInterceptorTest.java @@ -3,7 +3,8 @@ */ package org.springframework.web.servlet.view.mustache.java; -import com.google.common.base.Function; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -11,12 +12,11 @@ import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.util.Locale; +import java.util.function.Function; import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.eq; + import static org.mockito.Mockito.*; /** @@ -78,4 +78,4 @@ public void test() throws Exception { verifyNoMoreInteractions(messageSource); } -} +} \ No newline at end of file diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactoryTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactoryTest.java index 5174360..018e6d9 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactoryTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateFactoryTest.java @@ -21,7 +21,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; @@ -87,7 +87,7 @@ public void testResourceFound() throws Exception { .when(resource) .getInputStream(); - doReturn(TEST_TEMPLATE.getFile()).when(resource).getFile(); +// doReturn(TEST_TEMPLATE.getFile()).when(resource).getFile(); assertNotNull(templateFactory.getTemplate("test_template")); assertEquals(templateNameCaptor.getValue(), "prefix/test_template"); diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateTest.java index 6465d06..3d8a0f2 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/java/MustacheJTemplateTest.java @@ -5,7 +5,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import java.io.Writer; diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactoryTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactoryTest.java index 81dea1f..4bcfec6 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactoryTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateFactoryTest.java @@ -5,7 +5,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import org.springframework.web.servlet.view.mustache.MustacheTemplateException; import java.io.FileNotFoundException; diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoaderTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoaderTest.java index 41d0401..667ea33 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoaderTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateLoaderTest.java @@ -48,7 +48,7 @@ public void setUp() throws Exception { resourceLoader = Mockito.mock(ResourceLoader.class); Mockito.doReturn(resource).when(resourceLoader).getResource(templateNameCaptor.capture()); - loader = new JMustacheTemplateLoader(); + loader = new JMustacheTemplateLoader(resourceLoader); loader.setResourceLoader(resourceLoader); } @@ -77,4 +77,4 @@ public void testResourceFound() throws Exception { assertEquals(templateNameCaptor.getValue(), "prefix/test_template.suffix"); } -} +} \ No newline at end of file diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateTest.java index 292433e..dd66a2b 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/JMustacheTemplateTest.java @@ -20,7 +20,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.MockitoJUnitRunner; import java.io.Writer; diff --git a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptorTest.java b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptorTest.java index e96eb8a..6fe0326 100644 --- a/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptorTest.java +++ b/src/test/java/org/springframework/web/servlet/view/mustache/jmustache/LocalizationMessageInterceptorTest.java @@ -6,6 +6,8 @@ import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Mustache.Lambda; import com.samskivert.mustache.Template; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -13,13 +15,11 @@ import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.Writer; import java.util.Locale; import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.eq; + import static org.mockito.Mockito.*; /** @@ -89,4 +89,4 @@ public void test() throws Exception { verifyNoMoreInteractions(messageSource); } -} +} \ No newline at end of file From 721d50a374062d8d262fb3e29aeaa064ed2ce43d Mon Sep 17 00:00:00 2001 From: dwe Date: Mon, 12 Dec 2022 17:11:21 +0100 Subject: [PATCH 2/2] addded description for usage within spring boot 3 --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4fba8fc..da9b59e 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Spring Configuration - + Localization Support --------------- @@ -72,8 +72,55 @@ Localization Support + +Spring Boot 3 - Configuration +------------- +Once you have a spring boot 3 web application running, register the mustache spring view dependency via the pom.xml: +``` + + com.github.sps.mustache + mustache-spring-view + 1.5-SNAPSHOT + +``` +Create the localization implementation for mustache i18n lambda +``` +public class LocalizationMessageInterceptor extends MustacheLocalizationMessageInterceptor { + public LocalizationMessageInterceptor() { + } + + protected Object createHelper(final HttpServletRequest request) { + return new Mustache.Lambda() { + public void execute(Template.Fragment frag, Writer out) throws IOException { + LocalizationMessageInterceptor.this.localize(request, frag.execute(), out); + } + }; + } +} +``` +Register the localization implementation +``` +@Component +public class InterceptorRegistration implements WebMvcConfigurer { + @Autowired + LocalizationMessageInterceptor localizationMessageInterceptor; + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(localizationMessageInterceptor); + } +} +``` +Ensure to add your `messages.properties` files in your application.yaml: +``` +spring: + messages: + basename: "messages.error.messages,messages.business.messages" +``` +This means: having a directory `messages` containing `error` and `business` directory, having messages bundle within it (messages.properties messages_uk. +properties etc) + Thanks --------------- -Thanks to [Eric White](https://github.com/ericdwhite) for [forking](https://github.com/ericdwhite/mustache.java-spring-webmvc/) this code base and providing the mustache.java implementation. +Thanks to [Eric White](https://github.com/ericdwhite) for [forking](https://github.com/ericdwhite/mustache.java-spring-webmvc/) this code base and providing the mustache.java implementation. \ No newline at end of file