Skip to content

Commit c005a35

Browse files
committed
fixing Grails 5 config access (Accessing config through dot notation is deprecated)
1 parent 7b5499a commit c005a35

File tree

5 files changed

+78
-14
lines changed

5 files changed

+78
-14
lines changed

grails-app/services/grails/plugins/mail/MailService.groovy

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ class MailService implements InitializingBean, DisposableBean, GrailsConfigurati
3535

3636
static transactional = false
3737

38-
Config configuration
38+
MailConfig configuration
3939
MailMessageBuilderFactory mailMessageBuilderFactory
4040
ThreadPoolExecutor mailExecutorService
4141

4242
private static final Integer DEFAULT_POOL_SIZE = 5
4343

44-
MailMessage sendMail(Config config, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MailMessageBuilder) Closure callable) {
44+
MailMessage sendMail(MailConfig config, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MailMessageBuilder) Closure callable) {
4545
if (isDisabled()) {
4646
log.warn("Sending emails disabled by configuration option")
4747
return
@@ -55,20 +55,29 @@ class MailService implements InitializingBean, DisposableBean, GrailsConfigurati
5555
return messageBuilder.sendMessage(mailExecutorService)
5656
}
5757

58+
MailMessage sendMail(Config config, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MailMessageBuilder) Closure callable) {
59+
return sendMail(new MailConfig(config), callable)
60+
}
61+
5862
MailMessage sendMail(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MailMessageBuilder) Closure callable) {
5963
return sendMail(configuration, callable)
6064
}
6165

6266

6367
boolean isDisabled() {
64-
configuration.getProperty('grails.mail.disabled',Boolean, false)
68+
configuration.disabled
6569
}
6670

6771
void setPoolSize(Integer poolSize){
6872
mailExecutorService.setMaximumPoolSize(poolSize ?: DEFAULT_POOL_SIZE)
6973
mailExecutorService.setCorePoolSize(poolSize ?: DEFAULT_POOL_SIZE)
7074
}
7175

76+
@Override
77+
void setConfiguration(Config config) {
78+
configuration = new MailConfig(config)
79+
}
80+
7281
@Override
7382
public void destroy() throws Exception {
7483
mailExecutorService.shutdown()
@@ -79,7 +88,7 @@ class MailService implements InitializingBean, DisposableBean, GrailsConfigurati
7988
public void afterPropertiesSet() throws Exception {
8089
mailExecutorService = new ThreadPoolExecutor(1, 1, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>())
8190

82-
Integer poolSize = configuration.getProperty('grails.mail.poolSize', Integer)
91+
Integer poolSize = configuration.poolSize
8392
try{
8493
((ThreadPoolExecutor)mailExecutorService).allowCoreThreadTimeOut(true)
8594
}catch(MissingMethodException e){
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package grails.plugins.mail
2+
3+
import grails.config.Config
4+
import groovy.transform.EqualsAndHashCode
5+
import org.grails.config.NavigableMap
6+
7+
@EqualsAndHashCode
8+
class MailConfig {
9+
10+
final boolean disabled
11+
final String overrideAddress
12+
final String from
13+
final String to
14+
15+
final Integer poolSize
16+
final String encoding
17+
final String jndiName
18+
final String protocol
19+
final String host
20+
final Integer port
21+
final String username
22+
final String password
23+
final Properties props
24+
25+
MailConfig(Config config) {
26+
disabled = config.getProperty('grails.mail.disabled', Boolean, false)
27+
overrideAddress = config.getProperty('grails.mail.overrideAddress')
28+
from = config.getProperty('grails.mail.default.from')
29+
to = config.getProperty('grails.mail.default.to')
30+
poolSize = config.getProperty('grails.mail.poolSize', Integer)
31+
encoding = config.getProperty('grails.mail.encoding')
32+
jndiName = config.getProperty('grails.mail.jndiName')
33+
protocol = config.getProperty('grails.mail.protocol')
34+
host = config.getProperty('grails.mail.host')
35+
port = config.getProperty('grails.mail.port', Integer)
36+
username = config.getProperty('grails.mail.username')
37+
password = config.getProperty('grails.mail.password')
38+
39+
Map props = config.getProperty('grails.mail.props', Map)
40+
if (props != null) {
41+
if (props instanceof NavigableMap) {
42+
this.props = props.toProperties()
43+
} else {
44+
this.props = new Properties()
45+
this.props.putAll(props)
46+
}
47+
} else {
48+
this.props = null
49+
}
50+
}
51+
}

src/main/groovy/grails/plugins/mail/MailGrailsPlugin.groovy

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ sendMail {
6868
]
6969

7070
Integer mailConfigHash
71-
ConfigObject mailConfig
71+
MailConfig mailConfig
7272
boolean createdSession = false
7373

7474

7575
Closure doWithSpring() {
7676
{->
77-
mailConfig = grailsApplication.config.grails.mail
77+
mailConfig = new MailConfig(grailsApplication.config)
7878
mailConfigHash = mailConfig.hashCode()
7979

8080
configureMailSender(delegate, mailConfig)
@@ -93,7 +93,7 @@ sendMail {
9393

9494

9595
void onConfigChange(Map<String, Object> event) {
96-
ConfigObject newMailConfig = event.source.grails.mail
96+
MailConfig newMailConfig = new MailConfig(event.source)
9797
Integer newMailConfigHash = newMailConfig.hashCode()
9898

9999
if (newMailConfigHash != mailConfigHash) {
@@ -114,7 +114,7 @@ sendMail {
114114
}
115115
}
116116

117-
def configureMailSender(builder, config) {
117+
def configureMailSender(builder, MailConfig config) {
118118
builder.with {
119119
if (config.jndiName && !springConfig.containsBean("mailSession")) {
120120
mailSession(JndiObjectFactoryBean) {
@@ -153,8 +153,8 @@ sendMail {
153153
password = config.password
154154
if (config.protocol)
155155
protocol = config.protocol
156-
if (config.props instanceof Map && config.props)
157-
javaMailProperties = config.props.toFlatConfig()
156+
if (config.props)
157+
javaMailProperties = config.props
158158
}
159159
}
160160
}

src/main/groovy/grails/plugins/mail/MailMessageBuilder.groovy

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,16 @@ class MailMessageBuilder {
7272
}
7373

7474
MailMessageBuilder(MailSender mailSender, Config config, MailMessageContentRenderer mailMessageContentRenderer = null) {
75+
this(mailSender, new MailConfig(config), mailMessageContentRenderer)
76+
}
77+
78+
MailMessageBuilder(MailSender mailSender, MailConfig config, MailMessageContentRenderer mailMessageContentRenderer = null) {
7579
this.mailSender = mailSender
7680
this.mailMessageContentRenderer = mailMessageContentRenderer
7781

78-
this.overrideAddress = config.getProperty('grails.mail.overrideAddress')
79-
this.defaultFrom = overrideAddress ?: config.getProperty('grails.mail.default.from')
80-
this.defaultTo = overrideAddress ?: config.getProperty('grails.mail.default.to')
82+
this.overrideAddress = config.overrideAddress
83+
this.defaultFrom = overrideAddress ?: config.from
84+
this.defaultTo = overrideAddress ?: config.to
8185
}
8286

8387
private MailMessage getMessage() {

src/main/groovy/grails/plugins/mail/MailMessageBuilderFactory.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class MailMessageBuilderFactory {
3030
MailSender mailSender
3131
MailMessageContentRenderer mailMessageContentRenderer
3232

33-
MailMessageBuilder createBuilder(Config config) {
33+
MailMessageBuilder createBuilder(MailConfig config) {
3434
new MailMessageBuilder(mailSender, config, mailMessageContentRenderer)
3535
}
3636

0 commit comments

Comments
 (0)