Skip to content

Commit cb5ce64

Browse files
committed
- moved all modularized code into their own modules and fixed dependency issues (#183),
- restructured all packages (#183), - added support for CalendarMethod in CLI (#156), - fixed JavaDoc for Maven multi-module project (#183) - fixed all JavaDoc problems (#156)
1 parent 5052894 commit cb5ce64

File tree

117 files changed

+2059
-7274
lines changed

Some content is hidden

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

117 files changed

+2059
-7274
lines changed

pom.xml

+13-52
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,10 @@
3030

3131
<!-- core dependencies -->
3232
<dependency>
33-
<groupId>com.sun.mail</groupId>
34-
<artifactId>javax.mail</artifactId>
35-
<version>1.6.2</version>
36-
</dependency>
37-
<dependency>
38-
<groupId>com.github.bbottema</groupId>
39-
<artifactId>emailaddress-rfc2822</artifactId>
40-
<version>1.1.2</version>
41-
</dependency>
42-
<dependency>
43-
<groupId>org.mnode.ical4j</groupId>
44-
<artifactId>ical4j</artifactId>
45-
<version>2.2.0</version>
46-
<scope>test</scope>
47-
</dependency>
48-
<dependency><!-- Annotation processor -->
49-
<groupId>com.github.therapi</groupId>
50-
<artifactId>therapi-runtime-javadoc-scribe</artifactId>
51-
<version>0.9.0</version>
52-
<scope>provided</scope><!-- makes library mandatory if we should support CLI (even optionally) -->
33+
<groupId>org.simplejavamail</groupId>
34+
<artifactId>core-module</artifactId>
35+
<version>${library.version}</version>
36+
<scope>compile</scope>
5337
</dependency>
5438

5539
<!-- optional support modules -->
@@ -65,43 +49,20 @@
6549
<version>${library.version}</version>
6650
<optional>true</optional>
6751
</dependency>
68-
<!--<dependency>-->
69-
<!--<groupId>org.simplejavamail</groupId>-->
70-
<!--<artifactId>spring-module</artifactId>-->
71-
<!--<version>${library.version}</version>-->
72-
<!--<optional>true</optional>-->
73-
<!--</dependency>-->
52+
53+
<!-- testing -->
7454
<dependency>
7555
<groupId>org.simplejavamail</groupId>
76-
<artifactId>cli-module</artifactId>
56+
<artifactId>core-test-module</artifactId>
7757
<version>${library.version}</version>
78-
<optional>true</optional>
79-
</dependency>
80-
81-
<!-- optional Spring support -->
82-
83-
84-
<!-- spring support (optional) -->
85-
<dependency>
86-
<groupId>org.springframework</groupId>
87-
<artifactId>spring-core</artifactId>
88-
<version>${spring.version}</version>
89-
<scope>compile</scope>
90-
</dependency>
91-
<dependency>
92-
<groupId>org.springframework</groupId>
93-
<artifactId>spring-context</artifactId>
94-
<version>${spring.version}</version>
95-
<scope>compile</scope>
58+
<scope>test</scope>
9659
</dependency>
9760
<dependency>
98-
<groupId>org.springframework</groupId>
99-
<artifactId>spring-beans</artifactId>
100-
<version>${spring.version}</version>
101-
<scope>compile</scope>
61+
<groupId>org.mnode.ical4j</groupId>
62+
<artifactId>ical4j</artifactId>
63+
<version>2.2.0</version>
64+
<scope>test</scope>
10265
</dependency>
103-
104-
<!-- testing -->
10566
<dependency><!-- SMTP test server -->
10667
<groupId>org.subethamail</groupId>
10768
<artifactId>subethasmtp</artifactId>
@@ -131,7 +92,7 @@
13192
</executions>
13293
<configuration>
13394
<classes>
134-
<param>org.simplejavamail.email.Email</param>
95+
<param>org.simplejavamail.api.email.Email</param>
13596
</classes>
13697
</configuration>
13798
</plugin>

src/main/java/org/simplejavamail/MailException.java

-16
This file was deleted.

src/main/java/org/simplejavamail/cli/SimpleJavaMail.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
* <p>
88
* A note on the Javadoc-to-CLI-usage conversion: Everything is converted generically with the following exception:
99
* <ul>
10-
* <li>[<strong>{@code (?i)Alias for:?}</strong>]:<br/>Javadoc with an "Alias for: {@ocde {@link}}" occurrence (or variation) are processed
10+
* <li>[<strong>{@code (?i)Alias for:?}</strong>]:<br>Javadoc with an "Alias for: {@code {@link}}" occurrence (or variation) are processed
1111
* specially</li>
12-
* <li>[<strong>{@code (?i)(?:delegates|delegating) to:?}</strong>]:<br/>Javadoc with an "Delegates to: {@ocde {@link}}" occurrence (or variation) are
12+
* <li>[<strong>{@code (?i)(?:delegates|delegating) to:?}</strong>]:<br>Javadoc with an "Delegates to: {@code {@link}}" occurrence (or variation) are
1313
* processed specially</li>
14-
* <li>[<strong>{@code (?i)(?s).*(?<examples> examples?:\s*)}</strong>]:<br/>Javadoc with an "Examples: HTML list of examples" occurrence (or
14+
* <li>[<strong>{@code (?i)(?s).*(?<examples> examples?:\s*)}</strong>]:<br>Javadoc with an "Examples: HTML list of examples" occurrence (or
1515
* variation) are processed specially</li>
1616
* </ul>
1717
*/

src/main/java/org/simplejavamail/converter/EmailConverter.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
import org.simplejavamail.converter.internal.mimemessage.MimeMessageParser;
44
import org.simplejavamail.converter.internal.mimemessage.MimeMessageParser.ParsedMimeMessageComponents;
55
import org.simplejavamail.converter.internal.mimemessage.MimeMessageProducerHelper;
6-
import org.simplejavamail.email.CalendarMethod;
7-
import org.simplejavamail.email.Email;
6+
import org.simplejavamail.api.email.CalendarMethod;
7+
import org.simplejavamail.api.email.Email;
88
import org.simplejavamail.email.EmailBuilder;
9-
import org.simplejavamail.email.EmailPopulatingBuilder;
9+
import org.simplejavamail.api.email.EmailPopulatingBuilder;
10+
import org.simplejavamail.email.internal.EmailStartingBuilderImpl;
1011
import org.simplejavamail.internal.modules.ModuleLoader;
1112

1213
import javax.activation.DataSource;
@@ -33,10 +34,11 @@
3334
import static java.nio.charset.StandardCharsets.UTF_8;
3435
import static org.simplejavamail.internal.util.MiscUtil.extractCID;
3536
import static org.simplejavamail.internal.util.MiscUtil.readInputStreamToString;
37+
import static org.simplejavamail.internal.util.Preconditions.assumeNonNull;
3638
import static org.simplejavamail.internal.util.Preconditions.checkNonEmptyArgument;
3739

3840
/**
39-
* Utility to help convert {@link org.simplejavamail.email.Email} instances to other formats (MimeMessage, EML etc.) and vice versa.
41+
* Utility to help convert {@link org.simplejavamail.api.email.Email} instances to other formats (MimeMessage, EML etc.) and vice versa.
4042
*
4143
* If you use the Outlook parsing API, make sure you load the following dependency: <em>org.simplejavamail::outlook-message-parser</em>
4244
*/
@@ -74,18 +76,20 @@ public static EmailPopulatingBuilder mimeMessageToEmailBuilder(@Nonnull final Mi
7476
/**
7577
* @param msgData The content of an Outlook (.msg) message from which to create the {@link Email}.
7678
*/
79+
@SuppressWarnings("deprecation")
7780
public static Email outlookMsgToEmail(@Nonnull final String msgData) {
78-
return ModuleLoader.loadOutlookModule().outlookMsgToEmail(msgData);
81+
return ModuleLoader.loadOutlookModule().outlookMsgToEmail(msgData, new EmailStartingBuilderImpl());
7982
}
8083

8184
/**
8285
* @param msgFile The content of an Outlook (.msg) message from which to create the {@link Email}.
8386
*/
87+
@SuppressWarnings("deprecation")
8488
public static Email outlookMsgToEmail(@Nonnull final File msgFile) {
8589
if (!MSG_PATH_MATCHER.matches(msgFile.toPath())) {
8690
throw new EmailConverterException(format(EmailConverterException.FILE_NOT_RECOGNIZED_AS_OUTLOOK, msgFile));
8791
}
88-
return ModuleLoader.loadOutlookModule().outlookMsgToEmail(msgFile);
92+
return ModuleLoader.loadOutlookModule().outlookMsgToEmail(msgFile, new EmailStartingBuilderImpl());
8993
}
9094

9195
/**
@@ -98,8 +102,9 @@ public static Email outlookMsgToEmail(@Nonnull final InputStream msgInputStream)
98102
/**
99103
* @param msgInputStream The content of an Outlook (.msg) message from which to create the {@link Email}.
100104
*/
105+
@SuppressWarnings("deprecation")
101106
public static EmailPopulatingBuilder outlookMsgToEmailBuilder(@Nonnull final InputStream msgInputStream) {
102-
return ModuleLoader.loadOutlookModule().outlookMsgToEmailBuilder(msgInputStream);
107+
return ModuleLoader.loadOutlookModule().outlookMsgToEmailBuilder(msgInputStream, new EmailStartingBuilderImpl());
103108
}
104109

105110
/**
@@ -339,7 +344,7 @@ private static void buildEmailFromMimeMessage(@Nonnull final EmailPopulatingBuil
339344
builder.withHTMLText(parsed.getHtmlContent());
340345

341346
if (parsed.getCalendarMethod() != null) {
342-
builder.withCalendarText(CalendarMethod.valueOf(parsed.getCalendarMethod()), parsed.getCalendarContent());
347+
builder.withCalendarText(CalendarMethod.valueOf(parsed.getCalendarMethod()), assumeNonNull(parsed.getCalendarContent()));
343348
}
344349

345350
for (final Map.Entry<String, DataSource> cid : parsed.getCidMap().entrySet()) {

src/main/java/org/simplejavamail/converter/internal/mimemessage/DKIMSigner.java

-48
This file was deleted.

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageHelper.java

+13-20
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import net.markenwerk.utils.mail.dkim.DkimMessage;
4-
import net.markenwerk.utils.mail.dkim.DkimSigner;
5-
import org.simplejavamail.email.AttachmentResource;
6-
import org.simplejavamail.email.Email;
7-
import org.simplejavamail.email.Recipient;
3+
import org.simplejavamail.api.email.AttachmentResource;
4+
import org.simplejavamail.api.email.Email;
5+
import org.simplejavamail.api.email.Recipient;
86
import org.simplejavamail.internal.modules.ModuleLoader;
97

108
import javax.activation.DataHandler;
@@ -28,6 +26,7 @@
2826

2927
import static java.lang.String.format;
3028
import static org.simplejavamail.internal.util.MiscUtil.valueNullOrEmpty;
29+
import static org.simplejavamail.internal.util.Preconditions.checkNonEmptyArgument;
3130

3231
/**
3332
* Helper class that produces and populates a mime messages. Deals with javax.mail RFC MimeMessage stuff, as well as DKIM signing.
@@ -202,14 +201,14 @@ static void setHeaders(final Email email, final Message message)
202201
}
203202

204203
if (email.isUseDispositionNotificationTo()) {
205-
final Address address = new InternetAddress(email.getDispositionNotificationTo().getAddress(),
206-
email.getDispositionNotificationTo().getName(), CHARACTER_ENCODING);
204+
final Recipient dispositionTo = checkNonEmptyArgument(email.getDispositionNotificationTo(), "dispositionNotificationTo");
205+
final Address address = new InternetAddress(dispositionTo.getAddress(), dispositionTo.getName(), CHARACTER_ENCODING);
207206
message.setHeader("Disposition-Notification-To", address.toString());
208207
}
209208

210209
if (email.isUseReturnReceiptTo()) {
211-
final Address address = new InternetAddress(email.getReturnReceiptTo().getAddress(),
212-
email.getReturnReceiptTo().getName(), CHARACTER_ENCODING);
210+
final Recipient returnReceiptTo = checkNonEmptyArgument(email.getReturnReceiptTo(), "returnReceiptTo");
211+
final Address address = new InternetAddress(returnReceiptTo.getAddress(), returnReceiptTo.getName(), CHARACTER_ENCODING);
213212
message.setHeader("Return-Receipt-To", address.toString());
214213
}
215214
}
@@ -257,29 +256,23 @@ static String determineResourceName(final AttachmentResource attachmentResource,
257256
resourceName = "resource" + UUID.randomUUID();
258257
}
259258
if (includeExtension && !valueNullOrEmpty(datasourceName)) {
260-
@SuppressWarnings("UnnecessaryLocalVariable") final
261-
String possibleFilename = datasourceName;
259+
@SuppressWarnings("UnnecessaryLocalVariable")
260+
final String possibleFilename = datasourceName;
262261
if (!resourceName.contains(".") && possibleFilename.contains(".")) {
263-
final String extension = possibleFilename.substring(possibleFilename.lastIndexOf("."), possibleFilename.length());
262+
final String extension = possibleFilename.substring(possibleFilename.lastIndexOf("."));
264263
if (!resourceName.endsWith(extension)) {
265264
resourceName += extension;
266265
}
267266
}
268267
} else if (!includeExtension && resourceName.contains(".") && resourceName.equals(datasourceName)) {
269-
final String extension = resourceName.substring(resourceName.lastIndexOf("."), resourceName.length());
268+
final String extension = resourceName.substring(resourceName.lastIndexOf("."));
270269
resourceName = resourceName.replace(extension, "");
271270
}
272271
return resourceName;
273272
}
274273

275274
/**
276-
* Primes the {@link MimeMessage} instance for signing with DKIM. The signing itself is performed by {@link DkimMessage} and {@link DkimSigner}
277-
* during the physical sending of the message.
278-
*
279-
* @param messageToSign The message to be signed when sent.
280-
* @param emailContainingSigningDetails The {@link Email} that contains the relevant signing information
281-
*
282-
* @return The original mime message wrapped in a new one that performs signing when sent.
275+
* @see org.simplejavamail.internal.modules.DKIMModule#signMessageWithDKIM(MimeMessage, Email)
283276
*/
284277
public static MimeMessage signMessageWithDKIM(final MimeMessage messageToSign, final Email emailContainingSigningDetails) {
285278
return ModuleLoader.loadDKIMModule().signMessageWithDKIM(messageToSign, emailContainingSigningDetails);

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducerAlternative.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducerHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducerMixed.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducerMixedAlternative.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;
@@ -14,6 +14,7 @@ boolean compatibleWithEmail(@Nonnull Email email) {
1414
return emailContainsMixedContent(email) && !emailContainsRelatedContent(email) && emailContainsAlternativeContent(email);
1515
}
1616

17+
@SuppressWarnings("Duplicates")
1718
@Override
1819
void populateMimeMessageMultipartStructure(@Nonnull MimeMessage message, @Nonnull Email email) throws MessagingException {
1920
MultipartStructureWrapper multipartStructureWrapper = new MultipartStructureWrapper();
@@ -33,6 +34,7 @@ private static class MultipartStructureWrapper {
3334
private final MimeMultipart multipartRootMixed;
3435
private final MimeMultipart multipartAlternativeMessages;
3536

37+
@SuppressWarnings("Duplicates")
3638
private MultipartStructureWrapper() {
3739
multipartRootMixed = new MimeMultipart("mixed");
3840
final MimeBodyPart contentAlternativeMessages = new MimeBodyPart();

src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageProducerMixedRelated.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.simplejavamail.converter.internal.mimemessage;
22

3-
import org.simplejavamail.email.Email;
3+
import org.simplejavamail.api.email.Email;
44

55
import javax.annotation.Nonnull;
66
import javax.mail.MessagingException;
@@ -14,6 +14,7 @@ boolean compatibleWithEmail(@Nonnull Email email) {
1414
return emailContainsMixedContent(email) && emailContainsRelatedContent(email) && !emailContainsAlternativeContent(email);
1515
}
1616

17+
@SuppressWarnings("Duplicates")
1718
@Override
1819
public void populateMimeMessageMultipartStructure(@Nonnull MimeMessage message, @Nonnull Email email) throws MessagingException {
1920
MultipartStructureWrapper multipartStructureWrapper = new MultipartStructureWrapper();

0 commit comments

Comments
 (0)