Skip to content

Commit 3a60357

Browse files
authored
Merge pull request #34281 from gsmet/mailtemplate-location
Also create the default mailer if @location is used
2 parents b653d80 + a76e057 commit 3a60357

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

extensions/mailer/deployment/src/main/java/io/quarkus/mailer/deployment/MailerProcessor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,10 @@ MailersBuildItem generateMailerSupportBean(MailerRecorder recorder,
100100
.filter(i -> SUPPORTED_INJECTION_TYPES.contains(i.getRequiredType().name()))
101101
.collect(Collectors.toList());
102102

103-
boolean hasDefaultMailer = mailerInjectionPoints.stream().anyMatch(i -> i.hasDefaultedQualifier())
103+
boolean hasDefaultMailer = mailerInjectionPoints.stream()
104+
.anyMatch(i -> i.hasDefaultedQualifier() ||
105+
// we inject a MailTemplate and it is not named
106+
(MAIL_TEMPLATE.equals(i.getType().name()) && i.getRequiredQualifier(MAILER_NAME) == null))
104107
|| !index.getIndex().getAnnotations(CheckedTemplate.class).isEmpty();
105108

106109
Set<String> namedMailers = mailerInjectionPoints.stream()
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.quarkus.mailer;
2+
3+
import java.time.Duration;
4+
5+
import jakarta.inject.Inject;
6+
import jakarta.inject.Singleton;
7+
8+
import org.jboss.shrinkwrap.api.asset.StringAsset;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.extension.RegisterExtension;
11+
12+
import io.quarkus.qute.Location;
13+
import io.quarkus.test.QuarkusUnitTest;
14+
import io.smallrye.mutiny.Uni;
15+
16+
public class MailTemplateLocationTest {
17+
18+
@RegisterExtension
19+
static final QuarkusUnitTest config = new QuarkusUnitTest()
20+
.withApplicationRoot((jar) -> jar
21+
.addClasses(MailTemplates.class)
22+
.addAsResource("mock-config.properties", "application.properties")
23+
.addAsResource(new StringAsset(""
24+
+ "<html>{name}</html>"), "templates/confirmation.html"));
25+
26+
@Inject
27+
MailTemplates mailTemplates;
28+
29+
@Test
30+
public void testValidationFailed() {
31+
mailTemplates.send().await().atMost(Duration.ofSeconds(5));
32+
}
33+
34+
@Singleton
35+
static class MailTemplates {
36+
37+
@Inject
38+
@Location("confirmation")
39+
MailTemplate confirmationMailTemplate;
40+
41+
Uni<Void> send() {
42+
return confirmationMailTemplate.to("quarkus@quarkus.io").subject("Test").data("name", "Foo").send();
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)