001/* 002 * Copyright 2017 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * https://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package org.springframework.batch.item.mail.builder; 018 019import java.util.List; 020 021import org.springframework.batch.item.mail.DefaultMailErrorHandler; 022import org.springframework.batch.item.mail.MailErrorHandler; 023import org.springframework.batch.item.mail.SimpleMailMessageItemWriter; 024import org.springframework.mail.MailSender; 025import org.springframework.util.Assert; 026 027/** 028 * Creates a fully qualified SimpleMailMessageItemWriter. 029 * 030 * @author Glenn Renfro 031 * 032 * @since 4.0 033 */ 034 035public class SimpleMailMessageItemWriterBuilder { 036 037 private MailSender mailSender; 038 039 private MailErrorHandler mailErrorHandler = new DefaultMailErrorHandler(); 040 041 /** 042 * A {@link MailSender} to be used to send messages in 043 * {@link SimpleMailMessageItemWriter#write(List)}. 044 * 045 * @param mailSender strategy for sending simple mails. 046 * @return this instance for method chaining. 047 * @see SimpleMailMessageItemWriter#setMailSender(MailSender) 048 */ 049 public SimpleMailMessageItemWriterBuilder mailSender(MailSender mailSender) { 050 this.mailSender = mailSender; 051 return this; 052 } 053 054 /** 055 * The handler for failed messages. Defaults to a {@link DefaultMailErrorHandler}. 056 * 057 * @param mailErrorHandler the mail error handler to set. 058 * @return this instance for method chaining. 059 * @see SimpleMailMessageItemWriter#setMailErrorHandler(MailErrorHandler) 060 */ 061 public SimpleMailMessageItemWriterBuilder mailErrorHandler(MailErrorHandler mailErrorHandler) { 062 this.mailErrorHandler = mailErrorHandler; 063 return this; 064 } 065 066 /** 067 * Returns a fully constructed {@link SimpleMailMessageItemWriter}. 068 * 069 * @return a new {@link SimpleMailMessageItemWriter} 070 */ 071 public SimpleMailMessageItemWriter build() { 072 Assert.notNull(this.mailSender, "A mailSender is required"); 073 074 SimpleMailMessageItemWriter writer = new SimpleMailMessageItemWriter(); 075 writer.setMailSender(this.mailSender); 076 if (mailErrorHandler != null) { 077 writer.setMailErrorHandler(this.mailErrorHandler); 078 } 079 080 return writer; 081 } 082}