blob: 1478c397181c514305dfd53ec411b432905c1415 [file] [log] [blame]
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
* regarding copyright ownership. The ASF licenses this file *
* to you 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.apache.james.mime4j.message;
import org.apache.james.mime4j.codec.DecodeMonitor;
import org.apache.james.mime4j.dom.BinaryBody;
import org.apache.james.mime4j.dom.Body;
import org.apache.james.mime4j.dom.FieldParser;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.dom.Multipart;
import org.apache.james.mime4j.dom.TextBody;
import org.apache.james.mime4j.dom.address.Address;
import org.apache.james.mime4j.dom.address.AddressList;
import org.apache.james.mime4j.dom.address.Mailbox;
import org.apache.james.mime4j.dom.address.MailboxList;
import org.apache.james.mime4j.dom.field.ParseException;
import org.apache.james.mime4j.stream.BodyDescriptorBuilder;
import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.MimeConfig;
import org.apache.james.mime4j.stream.NameValuePair;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
/**
* Deprecated: please use {@link org.apache.james.mime4j.dom.Message.Builder Message.Builder} instead
* This builder will create message that do not respect the
* <code>Message.getDate()</code> contract regarding the return
* value when the message do not have a Date header
* See <a href="https://issues.apache.org/jira/browse/MIME4J-262">MIME4J-262</a>
*/
@Deprecated
@SuppressWarnings("deprecation")
public class MessageBuilder {
private final Message.Builder builder;
public MessageBuilder() {
this(Message.Builder.of());
}
private MessageBuilder(Message.Builder builder) {
this.builder = builder;
}
public static MessageBuilder create() {
return new MessageBuilder();
}
public static MessageBuilder createCopy(Message other) {
return new MessageBuilder(Message.Builder.of(other));
}
public static MessageBuilder read(InputStream is) throws IOException {
return new MessageBuilder(Message.Builder.of(is));
}
public MessageBuilder enableFlatMode() {
builder.enableFlatMode();
return this;
}
public MessageBuilder disableFlatMode() {
builder.disableFlatMode();
return this;
}
public MessageBuilder enableContentDecoding() {
builder.enableContentDecoding();
return this;
}
public MessageBuilder disableContentDecoding() {
builder.disableContentDecoding();
return this;
}
public MessageBuilder setField(Field field) {
builder.setField(field);
return this;
}
public MessageBuilder addField(Field field) {
builder.addField(field);
return this;
}
public Field getField(String name) {
return builder.getField(name);
}
public <F extends Field> F getField(final String name, final Class<F> clazz) {
return builder.getField(name, clazz);
}
public List<Field> getFields() {
return builder.getFields();
}
public <F extends Field> List<F> getFields(final String name, final Class<F> clazz) {
return builder.getFields(name, clazz);
}
public MessageBuilder removeFields(String name) {
builder.removeFields(name);
return this;
}
public MessageBuilder clearFields() {
builder.clearFields();
return this;
}
public boolean containsField(String name) {
return builder.containsField(name);
}
public String getMimeType() {
return builder.getMimeType();
}
public String getCharset() {
return builder.getCharset();
}
public String getContentTransferEncoding() {
return builder.getContentTransferEncoding();
}
public MessageBuilder setContentType(String mimeType, NameValuePair... parameters) {
builder.setContentType(mimeType, parameters);
return this;
}
public MessageBuilder setContentTransferEncoding(String contentTransferEncoding) {
builder.setContentTransferEncoding(contentTransferEncoding);
return this;
}
public String getDispositionType() {
return builder.getDispositionType();
}
public MessageBuilder setContentDisposition(String dispositionType) {
builder.setContentDisposition(dispositionType);
return this;
}
public MessageBuilder setContentDisposition(String dispositionType, String filename) {
builder.setContentDisposition(dispositionType, filename);
return this;
}
public MessageBuilder setContentDisposition(String dispositionType, String filename, long size) {
builder.setContentDisposition(dispositionType, filename, size);
return this;
}
public MessageBuilder setContentDisposition(String dispositionType, String filename, long size, Date creationDate, Date modificationDate, Date readDate) {
builder.setContentDisposition(dispositionType, filename, size, creationDate, modificationDate, readDate);
return this;
}
public Body getBody() {
return builder.getBody();
}
public MessageBuilder setBody(Multipart multipart) {
builder.setBody(multipart);
return this;
}
public MessageBuilder setBody(Message message) {
builder.setBody(message);
return this;
}
public MessageBuilder setBody(Body body) {
builder.setBody(body);
return this;
}
public MessageBuilder setBody(TextBody textBody) {
builder.setBody(textBody);
return this;
}
public MessageBuilder setBody(BinaryBody binaryBody) {
builder.setBody(binaryBody);
return this;
}
public MessageBuilder setBody(String text, Charset charset) throws IOException {
builder.setBody(text, charset);
return this;
}
public MessageBuilder setBody(String text, String subtype, Charset charset) throws IOException {
builder.setBody(text, subtype, charset);
return this;
}
public MessageBuilder setBody(byte[] bin, String mimeType) throws IOException {
builder.setBody(bin, mimeType);
return this;
}
public String getFilename() {
return builder.getFilename();
}
public long getSize() {
return builder.getSize();
}
public Date getCreationDate() {
return builder.getCreationDate();
}
public Date getModificationDate() {
return builder.getModificationDate();
}
public Date getReadDate() {
return getReadDate();
}
public String getMessageId() {
return builder.getMessageId();
}
public MessageBuilder setMessageId(String messageId) {
builder.setMessageId(messageId);
return this;
}
public MessageBuilder generateMessageId(String hostname) {
builder.generateMessageId(hostname);
return this;
}
public String getSubject() {
return builder.getSubject();
}
public MessageBuilder setSubject(String subject) {
builder.setSubject(subject);
return this;
}
public Date getDate() {
return builder.getDate();
}
public MessageBuilder setDate(Date date) {
builder.setDate(date);
return this;
}
public MessageBuilder setDate(Date date, TimeZone zone) {
builder.setDate(date, zone);
return this;
}
public Mailbox getSender() {
return builder.getSender();
}
public MessageBuilder setSender(Mailbox sender) {
builder.setSender(sender);
return this;
}
public MessageBuilder setSender(String sender) throws ParseException {
builder.setSender(sender);
return this;
}
public MailboxList getFrom() {
return builder.getFrom();
}
public MessageBuilder setFrom(String... from) throws ParseException {
builder.setFrom(from);
return this;
}
public MessageBuilder setFrom(Collection<Mailbox> from) {
builder.setFrom(from);
return this;
}
public MessageBuilder setFrom(Mailbox from) {
builder.setFrom(from);
return this;
}
public MessageBuilder setFrom(String from) throws ParseException {
builder.setFrom(from);
return this;
}
public MessageBuilder setFrom(Mailbox... from) {
builder.setFrom(from);
return this;
}
public AddressList getTo() {
return builder.getTo();
}
public MessageBuilder setTo(String... to) throws ParseException {
builder.setTo(to);
return this;
}
public MessageBuilder setTo(Collection<? extends Address> to) {
builder.setTo(to);
return this;
}
public MessageBuilder setTo(Address to) {
builder.setTo(to);
return this;
}
public MessageBuilder setTo(String to) throws ParseException {
builder.setTo(to);
return this;
}
public MessageBuilder setTo(Address... to) {
builder.setTo(to);
return this;
}
public AddressList getCc() {
return builder.getCc();
}
public MessageBuilder setCc(Address... cc) {
builder.setCc(cc);
return this;
}
public MessageBuilder setCc(Collection<? extends Address> cc) {
builder.setCc(cc);
return this;
}
public MessageBuilder setCc(Address cc) {
builder.setCc(cc);
return this;
}
public AddressList getBcc() {
return builder.getBcc();
}
public MessageBuilder setBcc(Address... bcc) {
builder.setBcc(bcc);
return this;
}
public MessageBuilder setBcc(Collection<? extends Address> bcc) {
builder.setBcc(bcc);
return this;
}
public MessageBuilder setBcc(Address bcc) {
builder.setBcc(bcc);
return this;
}
public MessageBuilder copy(Message other) {
builder.copy(other);
return this;
}
public MessageBuilder parse(InputStream is) throws IOException {
builder.parse(is);
return this;
}
public AddressList getReplyTo() {
return builder.getReplyTo();
}
public MessageBuilder setReplyTo(Address... replyTo) {
builder.setReplyTo(replyTo);
return this;
}
public MessageBuilder setReplyTo(Collection<? extends Address> replyTo) {
builder.setReplyTo(replyTo);
return this;
}
public MessageBuilder setReplyTo(Address replyTo) {
builder.setReplyTo(replyTo);
return this;
}
public MessageBuilder use(MimeConfig config) {
builder.use(config);
return this;
}
public MessageBuilder use(DecodeMonitor monitor) {
builder.use(monitor);
return this;
}
public MessageBuilder use(BodyDescriptorBuilder bodyDescBuilder) {
builder.use(bodyDescBuilder);
return this;
}
public MessageBuilder use(FieldParser<?> fieldParser) {
builder.use(fieldParser);
return this;
}
public MessageBuilder use(BodyFactory bodyFactory) {
builder.use(bodyFactory);
return this;
}
public Message build() {
if (getDate() == null) {
setDate(new Date());
}
return builder.build();
}
}