Skip to content

Commit ddda74d

Browse files
committed
Refactoring - moved API classes, models, added missing Javadoc, updated tests
1 parent a8d7435 commit ddda74d

File tree

90 files changed

+478
-312
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+478
-312
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ implementation("io.mailtrap:mailtrap-java:1.0-SNAPSHOT")
4343
import io.mailtrap.client.MailtrapClient;
4444
import io.mailtrap.config.MailtrapConfig;
4545
import io.mailtrap.factory.MailtrapClientFactory;
46-
import io.mailtrap.model.request.Address;
47-
import io.mailtrap.model.request.Attachment;
48-
import io.mailtrap.model.request.MailtrapMail;
46+
import io.mailtrap.model.request.emails.Address;
47+
import io.mailtrap.model.request.emails.EmailAttachment;
48+
import io.mailtrap.model.request.emails.MailtrapMail;
4949

5050
import java.util.List;
5151
import java.util.Map;
@@ -57,7 +57,7 @@ public class MailtrapJavaSDKTest {
5757

5858
Address to = new Address("[email protected]");
5959

60-
Attachment attachment = Attachment.builder()
60+
EmailAttachment attachment = EmailAttachment.builder()
6161
.filename("attachment.txt")
6262
.type("text/plain")
6363
// Should the Base64 encoded content of the attachment

src/main/java/io/mailtrap/CustomValidator.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ public CustomValidator(Validator validator) {
1616
this.validator = validator;
1717
}
1818

19+
/**
20+
* Validates the given object and returns a map of validation errors.
21+
*
22+
* <p>The map contains property names as keys and corresponding error messages as values.
23+
* If the object has no validation errors, the map will be empty.
24+
*
25+
* @param <T> the type of the object to validate
26+
* @param objectToValidate the object to validate
27+
* @return a map of validation errors, with property names as keys and error messages as values
28+
*/
1929
public <T> Map<String, String> validate(T objectToValidate) {
2030
final var violations = validator.validate(objectToValidate);
2131

@@ -28,6 +38,16 @@ public <T> Map<String, String> validate(T objectToValidate) {
2838
return errors;
2939
}
3040

41+
/**
42+
* Validates the given object and returns a string representation of the validation errors.
43+
*
44+
* <p>The returned string contains each validation error in the format "propertyName=errorMessage",
45+
* with errors separated by semicolons. If there are no validation errors, an empty string is returned.
46+
*
47+
* @param <T> the type of the object to validate
48+
* @param objectToValidate the object to validate
49+
* @return a string representation of the validation errors, or an empty string if there are no errors
50+
*/
3151
public <T> String validateAndGetViolationsAsString(T objectToValidate) {
3252
return this.validate(objectToValidate).entrySet().stream()
3353
.map(violation -> violation.getKey() + "=" + violation.getValue())

src/main/java/io/mailtrap/api/abstractions/AccountAccesses.java renamed to src/main/java/io/mailtrap/api/account_accesses/AccountAccesses.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package io.mailtrap.api.abstractions;
1+
package io.mailtrap.api.account_accesses;
22

3-
import io.mailtrap.model.request.ListAccountAccessQueryParams;
3+
import io.mailtrap.model.request.account_accesses.ListAccountAccessQueryParams;
44
import io.mailtrap.model.response.account_accesses.AccountAccessResponse;
55
import io.mailtrap.model.response.account_accesses.RemoveAccountAccessResponse;
66

src/main/java/io/mailtrap/api/AccountAccessesImpl.java renamed to src/main/java/io/mailtrap/api/account_accesses/AccountAccessesImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package io.mailtrap.api;
1+
package io.mailtrap.api.account_accesses;
22

33
import io.mailtrap.Constants;
4-
import io.mailtrap.api.abstractions.AccountAccesses;
5-
import io.mailtrap.api.abstractions.classes.ApiResource;
4+
import io.mailtrap.api.api_resource.ApiResource;
65
import io.mailtrap.config.MailtrapConfig;
76
import io.mailtrap.http.RequestData;
8-
import io.mailtrap.model.request.ListAccountAccessQueryParams;
7+
import io.mailtrap.model.request.account_accesses.ListAccountAccessQueryParams;
98
import io.mailtrap.model.response.account_accesses.AccountAccessResponse;
109
import io.mailtrap.model.response.account_accesses.RemoveAccountAccessResponse;
1110
import lombok.NonNull;

src/main/java/io/mailtrap/api/abstractions/Accounts.java renamed to src/main/java/io/mailtrap/api/accounts/Accounts.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package io.mailtrap.api.abstractions;
1+
package io.mailtrap.api.accounts;
22

3-
import io.mailtrap.model.response.AccountsResponse;
3+
import io.mailtrap.model.response.accounts.AccountsResponse;
44

55
import java.util.List;
66

src/main/java/io/mailtrap/api/AccountsImpl.java renamed to src/main/java/io/mailtrap/api/accounts/AccountsImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package io.mailtrap.api;
1+
package io.mailtrap.api.accounts;
22

33
import io.mailtrap.Constants;
4-
import io.mailtrap.api.abstractions.Accounts;
5-
import io.mailtrap.api.abstractions.classes.ApiResource;
4+
import io.mailtrap.api.api_resource.ApiResource;
65
import io.mailtrap.config.MailtrapConfig;
76
import io.mailtrap.http.RequestData;
8-
import io.mailtrap.model.response.AccountsResponse;
7+
import io.mailtrap.model.response.accounts.AccountsResponse;
98

109
import java.util.List;
1110

src/main/java/io/mailtrap/api/abstractions/classes/ApiResource.java renamed to src/main/java/io/mailtrap/api/api_resource/ApiResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.mailtrap.api.abstractions.classes;
1+
package io.mailtrap.api.api_resource;
22

33
import io.mailtrap.config.MailtrapConfig;
44
import io.mailtrap.http.CustomHttpClient;

src/main/java/io/mailtrap/api/abstractions/classes/ApiResourceWithValidation.java renamed to src/main/java/io/mailtrap/api/api_resource/ApiResourceWithValidation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.mailtrap.api.abstractions.classes;
1+
package io.mailtrap.api.api_resource;
22

33
import io.mailtrap.CustomValidator;
44
import io.mailtrap.config.MailtrapConfig;

src/main/java/io/mailtrap/api/abstractions/classes/SendApiResource.java renamed to src/main/java/io/mailtrap/api/api_resource/SendApiResource.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package io.mailtrap.api.abstractions.classes;
1+
package io.mailtrap.api.api_resource;
22

33
import io.mailtrap.CustomValidator;
44
import io.mailtrap.config.MailtrapConfig;
55
import io.mailtrap.exception.InvalidRequestBodyException;
6-
import io.mailtrap.model.request.MailtrapMail;
6+
import io.mailtrap.model.request.emails.MailtrapMail;
77
import org.apache.commons.collections4.MapUtils;
88
import org.apache.commons.lang3.StringUtils;
99

@@ -27,12 +27,14 @@ protected void validateRequestBodyOrThrowException(MailtrapMail mail) throws Inv
2727
throw new InvalidRequestBodyException("Mail must not be null");
2828
}
2929

30-
// All three fields can not be null - we should submit either text and/or html or templateUuid
31-
if (StringUtils.isEmpty(mail.getText()) && StringUtils.isEmpty(mail.getHtml()) && StringUtils.isEmpty(mail.getTemplateUuid())) {
32-
throw new InvalidRequestBodyException(String.format("Mail %s or %s or %s or %s and %s must not be null or empty",
30+
// All three fields can not be null - we should submit either subject and text and/or html or templateUuid
31+
if (StringUtils.isEmpty(mail.getSubject())
32+
&& StringUtils.isEmpty(mail.getText())
33+
&& StringUtils.isEmpty(mail.getHtml())
34+
&& StringUtils.isEmpty(mail.getTemplateUuid())) {
35+
throw new InvalidRequestBodyException(String.format("Mail %s or %s and %s or %s or both must not be null or empty",
3336
MailtrapMail.Fields.templateUuid,
34-
MailtrapMail.Fields.text,
35-
MailtrapMail.Fields.html,
37+
MailtrapMail.Fields.subject,
3638
MailtrapMail.Fields.text,
3739
MailtrapMail.Fields.html));
3840
}
@@ -55,6 +57,11 @@ protected void validateRequestBodyOrThrowException(MailtrapMail mail) throws Inv
5557
MailtrapMail.Fields.templateVariables,
5658
MailtrapMail.Fields.templateUuid));
5759
}
60+
if(StringUtils.isEmpty(mail.getSubject())) {
61+
throw new InvalidRequestBodyException(String.format("When %s is not set - the %s must be set",
62+
MailtrapMail.Fields.templateUuid,
63+
MailtrapMail.Fields.subject));
64+
}
5865
}
5966

6067
validateRequestBodyAndThrowException(mail);

src/main/java/io/mailtrap/api/abstractions/Attachments.java renamed to src/main/java/io/mailtrap/api/attachments/Attachments.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package io.mailtrap.api.abstractions;
1+
package io.mailtrap.api.attachments;
22

3-
import io.mailtrap.model.response.AttachmentResponse;
3+
import io.mailtrap.model.response.attachment.AttachmentResponse;
44
import org.jetbrains.annotations.Nullable;
55

66
import java.util.List;

0 commit comments

Comments
 (0)