Added DefaultMailHeaderGenerator (INT-142).

This commit is contained in:
Mark Fisher
2008-03-05 21:55:35 +00:00
parent 8b7c1c3c35
commit f1c0b169fb
3 changed files with 105 additions and 11 deletions

View File

@@ -0,0 +1,77 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.integration.adapter.mail;
import org.springframework.integration.message.Message;
/**
* The default implementation of {@link MailHeaderGenerator}. Configures the
* {@link org.springframework.mail.MailMessage} properties based on attributes
* provided with known attribute keys as defined in {@link MailTargetAdapter}.
*
* @author Mark Fisher
*/
public class DefaultMailHeaderGenerator extends AbstractMailHeaderGenerator {
@Override
protected String getSubject(Message<?> message) {
return this.retrieveAsString(message, MailTargetAdapter.SUBJECT);
}
@Override
protected String[] getTo(Message<?> message) {
return this.retrieveAsStringArray(message, MailTargetAdapter.TO);
}
@Override
protected String[] getCc(Message<?> message) {
return this.retrieveAsStringArray(message, MailTargetAdapter.CC);
}
@Override
protected String[] getBcc(Message<?> message) {
return this.retrieveAsStringArray(message, MailTargetAdapter.BCC);
}
@Override
protected String getFrom(Message<?> message) {
return this.retrieveAsString(message, MailTargetAdapter.FROM);
}
@Override
protected String getReplyTo(Message<?> message) {
return this.retrieveAsString(message, MailTargetAdapter.REPLY_TO);
}
private String retrieveAsString(Message<?> message, String key) {
Object value = message.getHeader().getAttribute(key);
return (value instanceof String) ? (String) value : null;
}
private String[] retrieveAsStringArray(Message<?> message, String key) {
Object value = message.getHeader().getAttribute(key);
if (value instanceof String[]) {
return (String[]) value;
}
if (value instanceof String) {
return new String[] { (String) value };
}
return null;
}
}

View File

@@ -35,9 +35,22 @@ import org.springframework.util.Assert;
*/
public class MailTargetAdapter implements MessageHandler, InitializingBean {
private volatile JavaMailSender mailSender;
public static final String SUBJECT = "_mail.SUBJECT";
private volatile MailHeaderGenerator mailHeaderGenerator;
public static final String TO = "_mail.TO";
public static final String CC = "_mail.CC";
public static final String BCC = "_mail.BCC";
public static final String FROM = "_mail.FROM";
public static final String REPLY_TO = "_mail.REPLY_TO";
private final JavaMailSender mailSender;
private volatile MailHeaderGenerator mailHeaderGenerator = new DefaultMailHeaderGenerator();
private volatile MessageMapper<String, MailMessage> textMessageMapper;
@@ -46,9 +59,19 @@ public class MailTargetAdapter implements MessageHandler, InitializingBean {
private volatile MessageMapper<Object, MailMessage> objectMessageMapper;
/**
* Create a MailTargetAdapter.
*
* @param mailSender the {@link JavaMailSender} instance to which this
* adapter will delegate.
*/
public MailTargetAdapter(JavaMailSender mailSender) {
Assert.notNull(mailSender, "'mailSender' must not be null");
this.mailSender = mailSender;
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(this.mailSender, "'mailSender' must not be null");
Assert.notNull(this.mailHeaderGenerator, "'mailHeaderGenerator' must not be null");
this.textMessageMapper = (this.textMessageMapper != null) ?
this.textMessageMapper : new TextMailMessageMapper();
this.byteArrayMessageMapper = (byteArrayMessageMapper != null) ?
@@ -57,11 +80,6 @@ public class MailTargetAdapter implements MessageHandler, InitializingBean {
this.objectMessageMapper : new DefaultObjectMailMessageMapper();
}
public void setMailSender(JavaMailSender mailSender) {
Assert.notNull(mailSender, "'mailSender' must not be null");
this.mailSender = mailSender;
}
public void setHeaderGenerator(MailHeaderGenerator mailHeaderGenerator) {
Assert.notNull(mailHeaderGenerator, "'mailHeaderGenerator' must not be null");
this.mailHeaderGenerator = mailHeaderGenerator;

View File

@@ -57,8 +57,7 @@ public class MailTargetAdapterTests {
mailHeaderGenerator.setReplyTo(MailTestsHelper.REPLY_TO);
mailHeaderGenerator.setSubject(MailTestsHelper.SUBJECT);
mailHeaderGenerator.setTo(MailTestsHelper.TO);
this.mailTargetAdapter = new MailTargetAdapter();
this.mailTargetAdapter.setMailSender(this.mailSender);
this.mailTargetAdapter = new MailTargetAdapter(this.mailSender);
this.mailTargetAdapter.setHeaderGenerator(mailHeaderGenerator);
this.mailTargetAdapter.afterPropertiesSet();
}