From 3995135a2c0070b7f9858554f84d6497d121c34e Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Fri, 9 Jul 2021 11:17:00 +0200 Subject: [PATCH] OZG-723 fix Forwarding Mail encoding --- pluto-server/pom.xml | 30 ++++++++++--------- pluto-server/run_local.sh | 2 +- .../java/de/itvsh/ozg/pluto/BeansConfig.java | 17 +++++++++++ .../vorgang/redirect/ForwardingService.java | 18 ++++++----- 4 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/BeansConfig.java diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml index b53b6870d..7d057e5fd 100644 --- a/pluto-server/pom.xml +++ b/pluto-server/pom.xml @@ -28,11 +28,13 @@ <spring-admin.version>2.3.1</spring-admin.version> <commons-io.version>2.8.0</commons-io.version> - + <spring-boot.build-image.imageName>docker.ozg-sh.de/pluto:build-latest</spring-boot.build-image.imageName> <zip.version>2.7.0</zip.version> <jsoup.version>1.13.1</jsoup.version> + + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> @@ -121,9 +123,9 @@ <version>${zip.version}</version> </dependency> <dependency> - <groupId>org.jsoup</groupId> - <artifactId>jsoup</artifactId> - <version>${jsoup.version}</version> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>${jsoup.version}</version> </dependency> <!-- Dev --> @@ -263,16 +265,16 @@ <compilerArg> -Amapstruct.unmappedTargetPolicy=IGNORE </compilerArg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> - <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> + <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin> diff --git a/pluto-server/run_local.sh b/pluto-server/run_local.sh index 63a0f5abc..5b9fae190 100755 --- a/pluto-server/run_local.sh +++ b/pluto-server/run_local.sh @@ -1 +1 @@ -mvn spring-boot:run -Dspring-boot.run.profiles=local +./mvnw spring-boot:run -Dspring-boot.run.profiles=local diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/BeansConfig.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/BeansConfig.java new file mode 100644 index 000000000..ca2edf0a0 --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/BeansConfig.java @@ -0,0 +1,17 @@ +package de.itvsh.ozg.pluto; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; + +@Configuration +public class BeansConfig { + + @Bean + public FreeMarkerConfigurer freeMarkerConfigurer() { + FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); + freeMarkerConfigurer.setTemplateLoaderPath("classpath:/templates"); + freeMarkerConfigurer.setDefaultEncoding("UTF-8"); + return freeMarkerConfigurer; + } +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/redirect/ForwardingService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/redirect/ForwardingService.java index 78258fc27..c294467e1 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/redirect/ForwardingService.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/redirect/ForwardingService.java @@ -1,8 +1,7 @@ package de.itvsh.ozg.pluto.vorgang.redirect; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.OutputStreamWriter; +import java.io.StringWriter; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.HashMap; @@ -18,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.util.MimeTypeUtils; +import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import de.itvsh.ozg.mail.email.MailSendRequest; import de.itvsh.ozg.mail.email.MailSendRequest.MailAttachment; @@ -28,7 +28,6 @@ import de.itvsh.ozg.pluto.common.util.ForwardingLandesnetzInfoService; import de.itvsh.ozg.pluto.vorgang.Vorgang; import de.itvsh.ozg.pluto.vorgang.VorgangService; import de.itvsh.ozg.pluto.vorgang.redirect.Forwarding.Status; -import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; @@ -62,7 +61,7 @@ public class ForwardingService { private ForwardingRepository repository; @Autowired - private Configuration freemarkerCfg; + private FreeMarkerConfigurer freemarkerCfg; @Autowired private MailService emailService; @@ -225,9 +224,12 @@ public class ForwardingService { } private String fillTemplate(String templateName, Object dataModel) { - try (var outStream = new ByteArrayOutputStream(); var writer = new OutputStreamWriter(outStream)) { - getTemplate(templateName).process(dataModel, writer); - return new String(outStream.toByteArray()); + try { + Template template = getTemplate(templateName); + StringWriter stringWriter = new StringWriter(); + template.process(dataModel, stringWriter); + return stringWriter.toString(); + } catch (IOException | TemplateException e) { throw new TechnicalException("Error filling mail template", e); } @@ -235,7 +237,7 @@ public class ForwardingService { Template getTemplate(String templateName) { try { - return freemarkerCfg.getTemplate(templateName); + return freemarkerCfg.getConfiguration().getTemplate(templateName); } catch (IOException e) { throw new TechnicalException("Error loading mail template", e); } -- GitLab