diff --git a/application/src/main/java/com/pablotj/restemailbridge/application/port/EmailConfigurationPort.java b/application/src/main/java/com/pablotj/restemailbridge/application/port/EmailConfigurationPort.java deleted file mode 100644 index b3dff6a..0000000 --- a/application/src/main/java/com/pablotj/restemailbridge/application/port/EmailConfigurationPort.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.pablotj.restemailbridge.application.port; - -public interface EmailConfigurationPort { - String getDefaultRecipient(); -} diff --git a/application/src/main/java/com/pablotj/restemailbridge/application/port/in/EmailDefaultConfigPort.java b/application/src/main/java/com/pablotj/restemailbridge/application/port/in/EmailDefaultConfigPort.java new file mode 100644 index 0000000..15423be --- /dev/null +++ b/application/src/main/java/com/pablotj/restemailbridge/application/port/in/EmailDefaultConfigPort.java @@ -0,0 +1,5 @@ +package com.pablotj.restemailbridge.application.port.in; + +public interface EmailDefaultConfigPort { + String getDefaultRecipient(); +} diff --git a/domain/src/main/java/com/pablotj/restemailbridge/domain/service/EmailService.java b/application/src/main/java/com/pablotj/restemailbridge/application/port/out/EmailPort.java similarity index 51% rename from domain/src/main/java/com/pablotj/restemailbridge/domain/service/EmailService.java rename to application/src/main/java/com/pablotj/restemailbridge/application/port/out/EmailPort.java index c527615..ac00ff4 100644 --- a/domain/src/main/java/com/pablotj/restemailbridge/domain/service/EmailService.java +++ b/application/src/main/java/com/pablotj/restemailbridge/application/port/out/EmailPort.java @@ -1,8 +1,8 @@ -package com.pablotj.restemailbridge.domain.service; +package com.pablotj.restemailbridge.application.port.out; import com.pablotj.restemailbridge.domain.model.Email; -public interface EmailService { +public interface EmailPort { Email sendEmail(Email email); } diff --git a/application/src/main/java/com/pablotj/restemailbridge/application/usecase/SendEmailUseCase.java b/application/src/main/java/com/pablotj/restemailbridge/application/usecase/SendEmailUseCase.java index 67a9279..da9fd0e 100644 --- a/application/src/main/java/com/pablotj/restemailbridge/application/usecase/SendEmailUseCase.java +++ b/application/src/main/java/com/pablotj/restemailbridge/application/usecase/SendEmailUseCase.java @@ -1,25 +1,25 @@ package com.pablotj.restemailbridge.application.usecase; import com.pablotj.restemailbridge.application.dto.EmailDTO; -import com.pablotj.restemailbridge.application.port.EmailConfigurationPort; +import com.pablotj.restemailbridge.application.port.in.EmailDefaultConfigPort; +import com.pablotj.restemailbridge.application.port.out.EmailPort; import com.pablotj.restemailbridge.domain.model.Email; import com.pablotj.restemailbridge.domain.repository.EmailRepository; -import com.pablotj.restemailbridge.domain.service.EmailService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Use case for sending emails. *

- * Retrieves the default recipient from EmailConfigurationPort, sends the email using EmailService, + * Retrieves the default recipient from EmailDefaultConfigPort, sends the email using EmailPort, * and persists it via EmailRepository. */ public class SendEmailUseCase { private static final Logger log = LoggerFactory.getLogger(SendEmailUseCase.class); - private final EmailConfigurationPort emailConfigurationPort; - private final EmailService emailService; + private final EmailDefaultConfigPort emailConfigurationPort; + private final EmailPort emailService; private final EmailRepository emailRepository; /** @@ -29,8 +29,8 @@ public class SendEmailUseCase { * @param emailService Service to send emails * @param emailRepository Repository to persist emails */ - public SendEmailUseCase(EmailConfigurationPort emailConfigurationPort, - EmailService emailService, + public SendEmailUseCase(EmailDefaultConfigPort emailConfigurationPort, + EmailPort emailService, EmailRepository emailRepository) { this.emailConfigurationPort = emailConfigurationPort; this.emailService = emailService; @@ -55,7 +55,7 @@ public class SendEmailUseCase { .build() ); - emailRepository.save(email); // Persist the sent email + emailRepository.save(email); log.info("Email successfully sent and persisted to repository for recipient {}", to); } } \ No newline at end of file diff --git a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/config/UseCaseConfig.java b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/config/UseCaseConfig.java index 0a6d6f3..d9c2096 100644 --- a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/config/UseCaseConfig.java +++ b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/config/UseCaseConfig.java @@ -1,9 +1,9 @@ package com.pablotj.restemailbridge.infrastructure.config; -import com.pablotj.restemailbridge.application.port.EmailConfigurationPort; +import com.pablotj.restemailbridge.application.port.in.EmailDefaultConfigPort; +import com.pablotj.restemailbridge.application.port.out.EmailPort; import com.pablotj.restemailbridge.application.usecase.SendEmailUseCase; import com.pablotj.restemailbridge.domain.repository.EmailRepository; -import com.pablotj.restemailbridge.domain.service.EmailService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; public class UseCaseConfig { @Bean - public SendEmailUseCase sendEmailUseCase(EmailConfigurationPort emailConfigurationPort, EmailService emailService, EmailRepository emailRepository) { + public SendEmailUseCase sendEmailUseCase(EmailDefaultConfigPort emailConfigurationPort, EmailPort emailService, EmailRepository emailRepository) { return new SendEmailUseCase(emailConfigurationPort, emailService, emailRepository); } } \ No newline at end of file diff --git a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/EmailConfigurationAdapter.java b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailDefaultConfigAdapter.java similarity index 59% rename from infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/EmailConfigurationAdapter.java rename to infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailDefaultConfigAdapter.java index 8a09bdc..1e25301 100644 --- a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/EmailConfigurationAdapter.java +++ b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailDefaultConfigAdapter.java @@ -1,10 +1,10 @@ package com.pablotj.restemailbridge.infrastructure.mail; -import com.pablotj.restemailbridge.application.port.EmailConfigurationPort; +import com.pablotj.restemailbridge.application.port.in.EmailDefaultConfigPort; import org.springframework.stereotype.Component; @Component -public class EmailConfigurationAdapter implements EmailConfigurationPort { +public class GmailDefaultConfigAdapter implements EmailDefaultConfigPort { @Override public String getDefaultRecipient() { return "pablodelatorree@gmail.com"; diff --git a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailService.java b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailAdapter.java similarity index 96% rename from infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailService.java rename to infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailAdapter.java index 2a00b93..63b1cf5 100644 --- a/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailService.java +++ b/infrastructure/src/main/java/com/pablotj/restemailbridge/infrastructure/mail/GmailOAuth2MailAdapter.java @@ -13,7 +13,7 @@ import com.google.api.services.gmail.Gmail; import com.google.api.services.gmail.GmailScopes; import com.google.api.services.gmail.model.Message; import com.pablotj.restemailbridge.domain.model.Email; -import com.pablotj.restemailbridge.domain.service.EmailService; +import com.pablotj.restemailbridge.application.port.out.EmailPort; import com.pablotj.restemailbridge.infrastructure.exception.GmailConfigurationException; import com.pablotj.restemailbridge.infrastructure.exception.GmailInitializationException; import com.pablotj.restemailbridge.infrastructure.exception.GmailSendErrorException; @@ -36,14 +36,14 @@ import java.util.List; import java.util.Properties; /** - * Gmail implementation of the EmailService using OAuth2 authentication. + * Gmail implementation of the EmailPort using OAuth2 authentication. *

* Handles sending emails via Gmail API and manages credentials stored in a local token folder. */ @Component -public class GmailOAuth2MailService implements EmailService { +public class GmailOAuth2MailAdapter implements EmailPort { - private static final Logger log = LoggerFactory.getLogger(GmailOAuth2MailService.class); + private static final Logger log = LoggerFactory.getLogger(GmailOAuth2MailAdapter.class); private static final String APPLICATION_NAME = "MailServiceApi"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static final List SCOPES = Collections.singletonList(GmailScopes.GMAIL_SEND); @@ -57,7 +57,7 @@ public class GmailOAuth2MailService implements EmailService { * * @param properties OAuth2 configuration for Gmail */ - public GmailOAuth2MailService(GmailOAuth2Properties properties) { + public GmailOAuth2MailAdapter(GmailOAuth2Properties properties) { this.properties = properties; }