Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- uses: aboutbits/github-actions-java/setup-with-maven@v4
with:
java-version: 21
java-version: 25
- name: Test
env:
GITHUB_USER_NAME: ${{ github.actor }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ jobs:
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
with:
token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
- uses: aboutbits/github-actions-base/git-setup@v2
- uses: aboutbits/github-actions-java/setup-with-maven@v4
with:
java-version: 21
java-version: 25
- uses: aboutbits/github-actions-java/set-version-with-maven@v4
with:
version: "${{ github.event.inputs.version }}"
Expand Down
4 changes: 2 additions & 2 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 14 additions & 20 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.2</version>
<version>4.0.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

Expand All @@ -16,8 +16,8 @@
<description>Spring Boot Email Service</description>

<properties>
<java.version>21</java.version>
<mapstruct.version>1.5.5.Final</mapstruct.version>
<java.version>25</java.version>
<mapstruct.version>1.6.3</mapstruct.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -57,39 +57,33 @@
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>io.hypersistence</groupId>
<artifactId>hypersistence-utils-hibernate-63</artifactId>
<version>3.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
<groupId>net.datafaker</groupId>
<artifactId>datafaker</artifactId>
<version>2.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.18.0</version>
<version>2.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.18.0</version>
<artifactId>testcontainers-junit-jupiter</artifactId>
<version>2.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.18.0</version>
<artifactId>testcontainers-postgresql</artifactId>
<version>2.0.5</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -99,7 +93,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<version>3.15.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
Expand Down Expand Up @@ -129,7 +123,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.2.1</version>
<version>3.6.0</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<suppressionsFileExpression>
Expand All @@ -154,7 +148,7 @@
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>10.3.4</version>
<version>13.5.0</version>
</dependency>
</dependencies>
</plugin>
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ A reusable mailer service to send emails.

## Setup

Add the mailer service to the classpath by adding the following maven dependency. Versions haven be found [here](../../packages)
Add the mailer service to the classpath by adding the following maven dependency. Versions can be found [here](../../packages)

```xml

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package it.aboutbits.springboot.emailservice.lib;

import org.springframework.lang.Nullable;
import org.jspecify.annotations.Nullable;

import java.time.OffsetDateTime;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Builder;
import lombok.NonNull;
import lombok.Singular;
import org.springframework.lang.Nullable;
import org.jspecify.annotations.Nullable;

import java.io.InputStream;
import java.time.OffsetDateTime;
Expand All @@ -14,30 +13,24 @@

@Builder
public record EmailParameter(
@NonNull
OffsetDateTime scheduledAt,
@NonNull
Email email
) {

@Builder
public record Email(
@NonNull
@NotBlank
String subject,

@Singular
@NonNull
@NotEmpty
List<String> recipients,

@NonNull String textBody,
@NonNull String htmlBody,
String textBody,
String htmlBody,

@NonNull
@NotBlank
String fromAddress,
@NonNull
@NotBlank
String fromName,

Expand All @@ -47,17 +40,13 @@ public record Email(
String replyToName,

@Singular
@NonNull
Set<Attachment> attachments
) {
@Builder
public record Attachment(
@NonNull
InputStream payload,
@NonNull
@NotBlank
String fileName,
@NonNull
@NotBlank
String contentType
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@
import it.aboutbits.springboot.emailservice.lib.model.EmailAttachment;
import jakarta.mail.MessagingException;
import jakarta.validation.Valid;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.lang.Nullable;
import org.jspecify.annotations.Nullable;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
Expand Down Expand Up @@ -48,7 +47,7 @@ public ManageEmail(
this.emailMapper = emailMapper;
}

public EmailDto schedule(@NonNull @Valid EmailParameter parameter) throws EmailException {
public EmailDto schedule(@Valid EmailParameter parameter) throws EmailException {
Email email;
try {
email = fromParameter(parameter);
Expand All @@ -61,7 +60,7 @@ public EmailDto schedule(@NonNull @Valid EmailParameter parameter) throws EmailE
return emailMapper.toDto(savedEmail);
}

public EmailDto sendOrFail(@NonNull @Valid EmailParameter parameter) throws EmailException {
public EmailDto sendOrFail(@Valid EmailParameter parameter) throws EmailException {
Email email;
try {
email = fromParameter(parameter);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
@NonNullApi
@NonNullFields
@NullMarked
package it.aboutbits.springboot.emailservice.lib.application;

import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
import org.jspecify.annotations.NullMarked;
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

import it.aboutbits.springboot.emailservice.lib.EmailState;
import it.aboutbits.springboot.emailservice.lib.model.Email;
import org.jspecify.annotations.NonNull;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.lang.NonNull;

import java.util.Collection;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.annotations.UpdateTimestamp;
import org.hibernate.type.SqlTypes;
import org.springframework.lang.Nullable;
import org.jspecify.annotations.Nullable;

import java.time.OffsetDateTime;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
@NonNullApi
@NonNullFields
@NullMarked
package it.aboutbits.springboot.emailservice.lib;

import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
import org.jspecify.annotations.NullMarked;
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.mail.MailSendException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;

import java.io.ByteArrayInputStream;
import java.time.OffsetDateTime;
Expand All @@ -31,10 +31,10 @@
@SpringBootTest
@WithPostgres
class ManageEmailTest {
@SpyBean
@MockitoSpyBean
JavaMailSender javaMailSender;

@MockBean
@MockitoBean
AttachmentDataSource attachmentDataSource;

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.domain.PageRequest;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.bean.override.mockito.MockitoBean;

import java.util.Set;

Expand All @@ -20,7 +20,7 @@
@SpringBootTest
@WithPostgres
class QueryEmailTest {
@MockBean
@MockitoBean
JavaMailSender javaMailSender;

@Autowired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ private void cleanTablesData(List<TableData> tablesToClean, Connection connectio
}

@Data
private static class TableData {
private static final class TableData {
private final String schema;
private final String name;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package it.aboutbits.springboot.emailservice.support.database.factory;

import com.github.javafaker.Faker;
import it.aboutbits.springboot.emailservice.lib.EmailState;
import it.aboutbits.springboot.emailservice.lib.model.Email;
import net.datafaker.Faker;

import java.time.OffsetDateTime;
import java.util.List;
Expand Down