Skip to content

Commit

Permalink
added optional support for Spring (for property loading)
Browse files Browse the repository at this point in the history
  • Loading branch information
Benny Bottema committed Jan 27, 2017
1 parent 4daf4b3 commit 29c492f
Show file tree
Hide file tree
Showing 15 changed files with 148 additions and 28 deletions.
24 changes: 24 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,30 @@
<version>3.0.1</version>
</dependency>

<!-- spring support (optional) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.5.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.5.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.5.RELEASE</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>


<!-- testing -->
<dependency>
<groupId>junit</groupId>
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/simplejavamail/email/Email.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
import java.util.regex.Pattern;

import static java.lang.String.format;
import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.internal.util.ConfigLoader.getProperty;
import static org.simplejavamail.internal.util.ConfigLoader.hasProperty;
import static org.simplejavamail.util.ConfigLoader.Property.*;
import static org.simplejavamail.util.ConfigLoader.getProperty;
import static org.simplejavamail.util.ConfigLoader.hasProperty;

/**
* Email message with all necessary data for an effective mailing action, including attachments etc.
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/simplejavamail/email/EmailBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
import java.util.Map;

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.internal.util.ConfigLoader.getProperty;
import static org.simplejavamail.internal.util.ConfigLoader.hasProperty;
import static org.simplejavamail.util.ConfigLoader.Property.*;
import static org.simplejavamail.util.ConfigLoader.getProperty;
import static org.simplejavamail.util.ConfigLoader.hasProperty;

/**
* Fluent interface Builder for Emails
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/simplejavamail/mailer/Mailer.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@

import static java.lang.String.format;
import static org.hazlewood.connor.bottema.emailaddress.EmailAddressCriteria.RFC_COMPLIANT;
import static org.simplejavamail.internal.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
import static org.simplejavamail.internal.util.ConfigLoader.Property.TRANSPORT_STRATEGY;
import static org.simplejavamail.internal.util.ConfigLoader.*;
import static org.simplejavamail.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
import static org.simplejavamail.util.ConfigLoader.Property.TRANSPORT_STRATEGY;
import static org.simplejavamail.util.ConfigLoader.*;
import static org.simplejavamail.mailer.config.TransportStrategy.findStrategyForSession;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import org.simplejavamail.mailer.internal.socks.SocksProxyConfig;

import static java.lang.String.format;
import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.internal.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.util.ConfigLoader.Property.*;
import static org.simplejavamail.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.internal.util.MiscUtil.checkArgumentNotEmpty;
import static org.simplejavamail.internal.util.MiscUtil.valueNullOrEmpty;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.simplejavamail.mailer.config;

import static java.lang.String.format;
import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.internal.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.util.ConfigLoader.Property.*;
import static org.simplejavamail.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.internal.util.MiscUtil.checkArgumentNotEmpty;
import static org.simplejavamail.internal.util.MiscUtil.valueNullOrEmpty;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.simplejavamail.MailException;
import org.simplejavamail.email.Email;
import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.internal.util.ConfigLoader.Property;
import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.util.ConfigLoader.Property;
import org.simplejavamail.mailer.config.ProxyConfig;
import org.simplejavamail.mailer.config.TransportStrategy;
import org.simplejavamail.mailer.internal.socks.AuthenticatingSocks5Bridge;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.simplejavamail.internal.util;
package org.simplejavamail.util;

import org.simplejavamail.mailer.config.TransportStrategy;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package org.simplejavamail.util;

import org.simplejavamail.mailer.Mailer;
import org.simplejavamail.util.ConfigLoader.Property;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class SimpleJavaMailSpringSupport {

@Bean
public Mailer loadGlobalConfigAndCreateDefaultMailer(
// now obviously there are easier ways to do this, but this is the only way
// I can think of that actually works accross Spring versions
@Value("${simplejavamail.javaxmail.debug:#{null}}") String javaxmailDebug,
@Value("${simplejavamail.transportstrategy:#{null}}") String transportstrategy,
@Value("${simplejavamail.smtp.host:#{null}}") String smtpHost,
@Value("${simplejavamail.smtp.port:#{null}}") String smtpPort,
@Value("${simplejavamail.smtp.username:#{null}}") String smtpUsername,
@Value("${simplejavamail.smtp.password:#{null}}") String smtpPassword,
@Value("${simplejavamail.proxy.host:#{null}}") String proxyHost,
@Value("${simplejavamail.proxy.port:#{null}}") String proxyPort,
@Value("${simplejavamail.proxy.username:#{null}}") String proxyUsername,
@Value("${simplejavamail.proxy.password:#{null}}") String proxyPassword,
@Value("${simplejavamail.proxy.socks5bridge.port:#{null}}") String proxySocks5bridgePort,
@Value("${simplejavamail.defaults.subject:#{null}}") String defaultSubject,
@Value("${simplejavamail.defaults.from.name:#{null}}") String defaultFromName,
@Value("${simplejavamail.defaults.from.address:#{null}}") String defaultFromAddress,
@Value("${simplejavamail.defaults.replyto.name:#{null}}") String defaultReplytoName,
@Value("${simplejavamail.defaults.replyto.address:#{null}}") String defaultReplytoAddress,
@Value("${simplejavamail.defaults.to.name:#{null}}") String defaultToName,
@Value("${simplejavamail.defaults.to.address:#{null}}") String defaultToAddress,
@Value("${simplejavamail.defaults.cc.name:#{null}}") String defaultCcName,
@Value("${simplejavamail.defaults.cc.address:#{null}}") String defaultCcAddress,
@Value("${simplejavamail.defaults.bcc.name:#{null}}") String defaultBccName,
@Value("${simplejavamail.defaults.bcc.address:#{null}}") String defaultBccAddress,
@Value("${simplejavamail.defaults.poolsize:#{null}}") String defaultPoolsize) {
Properties emailProperties = new Properties();
setNullableProperty(emailProperties, Property.JAVAXMAIL_DEBUG.key(), javaxmailDebug);
setNullableProperty(emailProperties, Property.TRANSPORT_STRATEGY.key(), transportstrategy);
setNullableProperty(emailProperties, Property.SMTP_HOST.key(), smtpHost);
setNullableProperty(emailProperties, Property.SMTP_PORT.key(), smtpPort);
setNullableProperty(emailProperties, Property.SMTP_USERNAME.key(), smtpUsername);
setNullableProperty(emailProperties, Property.SMTP_PASSWORD.key(), smtpPassword);
setNullableProperty(emailProperties, Property.PROXY_HOST.key(), proxyHost);
setNullableProperty(emailProperties, Property.PROXY_PORT.key(), proxyPort);
setNullableProperty(emailProperties, Property.PROXY_USERNAME.key(), proxyUsername);
setNullableProperty(emailProperties, Property.PROXY_PASSWORD.key(), proxyPassword);
setNullableProperty(emailProperties, Property.PROXY_SOCKS5BRIDGE_PORT.key(), proxySocks5bridgePort);
setNullableProperty(emailProperties, Property.DEFAULT_SUBJECT.key(), defaultSubject);
setNullableProperty(emailProperties, Property.DEFAULT_FROM_NAME.key(), defaultFromName);
setNullableProperty(emailProperties, Property.DEFAULT_FROM_ADDRESS.key(), defaultFromAddress);
setNullableProperty(emailProperties, Property.DEFAULT_REPLYTO_NAME.key(), defaultReplytoName);
setNullableProperty(emailProperties, Property.DEFAULT_REPLYTO_ADDRESS.key(), defaultReplytoAddress);
setNullableProperty(emailProperties, Property.DEFAULT_TO_NAME.key(), defaultToName);
setNullableProperty(emailProperties, Property.DEFAULT_TO_ADDRESS.key(), defaultToAddress);
setNullableProperty(emailProperties, Property.DEFAULT_CC_NAME.key(), defaultCcName);
setNullableProperty(emailProperties, Property.DEFAULT_CC_ADDRESS.key(), defaultCcAddress);
setNullableProperty(emailProperties, Property.DEFAULT_BCC_NAME.key(), defaultBccName);
setNullableProperty(emailProperties, Property.DEFAULT_BCC_ADDRESS.key(), defaultBccAddress);
setNullableProperty(emailProperties, Property.DEFAULT_POOL_SIZE.key(), defaultPoolsize);

ConfigLoader.loadProperties(emailProperties, true);

// this will configure itself with the global config and is read to use
// ofcourse this is optional simply as a convenience default
return new Mailer();
}

private void setNullableProperty(Properties emailProperties, String key, String value) {
if (value != null) {
emailProperties.setProperty(key, value);
}
}
}
5 changes: 1 addition & 4 deletions src/test/java/org/simplejavamail/email/EmailTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@

import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.mailer.Mailer;
import org.simplejavamail.util.ConfigLoader;
import testutil.ConfigLoaderTestHelper;
import testutil.EmailHelper;

import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;

Expand Down
2 changes: 1 addition & 1 deletion src/test/java/org/simplejavamail/mailer/MailerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.email.Email;
import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ProxyConfig;
import org.simplejavamail.mailer.config.ServerConfig;
import org.simplejavamail.mailer.config.TransportStrategy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ProxyConfig;
import testutil.ConfigLoaderTestHelper;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ServerConfig;
import testutil.ConfigLoaderTestHelper;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.simplejavamail.internal.util;
package org.simplejavamail.util;

import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.internal.util.ConfigLoader.Property;
import org.simplejavamail.mailer.config.TransportStrategy;
import org.simplejavamail.util.ConfigLoader.Property;
import testutil.ConfigLoaderTestHelper;

import java.io.ByteArrayInputStream;
Expand All @@ -13,8 +13,29 @@
import java.util.Properties;

import static org.assertj.core.api.Assertions.assertThat;
import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.mailer.config.TransportStrategy.SMTP_SSL;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_BCC_ADDRESS;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_BCC_NAME;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_CC_ADDRESS;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_CC_NAME;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_FROM_ADDRESS;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_FROM_NAME;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_REPLYTO_ADDRESS;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_REPLYTO_NAME;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_SUBJECT;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_TO_ADDRESS;
import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_TO_NAME;
import static org.simplejavamail.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
import static org.simplejavamail.util.ConfigLoader.Property.PROXY_HOST;
import static org.simplejavamail.util.ConfigLoader.Property.PROXY_PASSWORD;
import static org.simplejavamail.util.ConfigLoader.Property.PROXY_PORT;
import static org.simplejavamail.util.ConfigLoader.Property.PROXY_SOCKS5BRIDGE_PORT;
import static org.simplejavamail.util.ConfigLoader.Property.PROXY_USERNAME;
import static org.simplejavamail.util.ConfigLoader.Property.SMTP_HOST;
import static org.simplejavamail.util.ConfigLoader.Property.SMTP_PASSWORD;
import static org.simplejavamail.util.ConfigLoader.Property.SMTP_PORT;
import static org.simplejavamail.util.ConfigLoader.Property.SMTP_USERNAME;
import static org.simplejavamail.util.ConfigLoader.Property.TRANSPORT_STRATEGY;

public class ConfigLoaderTest {

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/testutil/ConfigLoaderTestHelper.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package testutil;

import org.simplejavamail.internal.util.ConfigLoader;
import org.simplejavamail.internal.util.ConfigLoader.Property;
import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.util.ConfigLoader.Property;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
Expand Down

1 comment on commit 29c492f

@bbottema
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implements #63. A small package change is applied to (ConfigLoader moved from internal.util to util).

Please sign in to comment.