/* * 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 javax.mail; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; import java.util.Date; import java.util.Enumeration; import java.util.LinkedList; import java.util.List; import javax.activation.DataHandler; import javax.mail.internet.InternetAddress; /** * @version $Rev$ $Date$ */ public class SimpleTextMessage extends Message { public static final Address[] ADDRESS_ARRAY = new Address[0]; private final List _bcc = new LinkedList(); private final List _cc = new LinkedList(); private String _description; private final Flags _flags = new Flags(); private final List _from = new LinkedList(); private Date _received; private Date _sent; private String _subject; private String _text; private List _to = new LinkedList(); /** * @param folder * @param number */ public SimpleTextMessage(final Folder folder, final int number) { super(folder, number); } /* (non-Javadoc) * @see javax.mail.Message#addFrom(javax.mail.Address[]) */ @Override public void addFrom(final Address[] addresses) throws MessagingException { _from.addAll(Arrays.asList(addresses)); } /* (non-Javadoc) * @see javax.mail.Part#addHeader(java.lang.String, java.lang.String) */ public void addHeader(final String name, final String value) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Message#addRecipients(javax.mail.Message.RecipientType, javax.mail.Address[]) */ @Override public void addRecipients(final RecipientType type, final Address[] addresses) throws MessagingException { getList(type).addAll(Arrays.asList(addresses)); } /* (non-Javadoc) * @see javax.mail.Part#getAllHeaders() */ public Enumeration getAllHeaders() throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#getContent() */ public Object getContent() throws IOException, MessagingException { return _text; } /* (non-Javadoc) * @see javax.mail.Part#getContentType() */ public String getContentType() throws MessagingException { return "text/plain"; } /* (non-Javadoc) * @see javax.mail.Part#getDataHandler() */ public DataHandler getDataHandler() throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#getDescription() */ public String getDescription() throws MessagingException { return _description; } /* (non-Javadoc) * @see javax.mail.Part#getDisposition() */ public String getDisposition() throws MessagingException { return Part.INLINE; } /* (non-Javadoc) * @see javax.mail.Part#getFileName() */ public String getFileName() throws MessagingException { return null; } /* (non-Javadoc) * @see javax.mail.Message#getFlags() */ @Override public Flags getFlags() throws MessagingException { return _flags; } /* (non-Javadoc) * @see javax.mail.Message#getFrom() */ @Override public Address[] getFrom() throws MessagingException { return (Address[]) _from.toArray(ADDRESS_ARRAY); } /* (non-Javadoc) * @see javax.mail.Part#getHeader(java.lang.String) */ public String[] getHeader(final String name) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#getInputStream() */ public InputStream getInputStream() throws IOException, MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#getLineCount() */ public int getLineCount() throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } private List getList(final RecipientType type) throws MessagingException { List list; if (type == RecipientType.TO) { list = _to; } else if (type == RecipientType.CC) { list = _cc; } else if (type == RecipientType.BCC) { list = _bcc; } else { throw new MessagingException("Address type not understood"); } return list; } /* (non-Javadoc) * @see javax.mail.Part#getMatchingHeaders(java.lang.String[]) */ public Enumeration getMatchingHeaders(final String[] names) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#getNonMatchingHeaders(java.lang.String[]) */ public Enumeration getNonMatchingHeaders(final String[] names) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Message#getReceivedDate() */ @Override public Date getReceivedDate() throws MessagingException { return _received; } /* (non-Javadoc) * @see javax.mail.Message#getRecipients(javax.mail.Message.RecipientType) */ @Override public Address[] getRecipients(final RecipientType type) throws MessagingException { return (Address[]) getList(type).toArray(ADDRESS_ARRAY); } /* (non-Javadoc) * @see javax.mail.Message#getSentDate() */ @Override public Date getSentDate() throws MessagingException { return _sent; } /* (non-Javadoc) * @see javax.mail.Part#getSize() */ public int getSize() throws MessagingException { return _text.length(); } /* (non-Javadoc) * @see javax.mail.Message#getSubject() */ @Override public String getSubject() throws MessagingException { return _subject; } /* (non-Javadoc) * @see javax.mail.Part#isMimeType(java.lang.String) */ public boolean isMimeType(final String mimeType) throws MessagingException { return mimeType.equals("text/plain") || mimeType.equals("text/*"); } /* (non-Javadoc) * @see javax.mail.Part#removeHeader(java.lang.String) */ public void removeHeader(final String name) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Message#reply(boolean) */ @Override public Message reply(final boolean replyToAll) throws MessagingException { try { final SimpleTextMessage reply = (SimpleTextMessage) this.clone(); reply._to = new LinkedList(_from); if (replyToAll) { reply._to.addAll(_cc); } return reply; } catch (final CloneNotSupportedException e) { throw new MessagingException(e.getMessage()); } } /* (non-Javadoc) * @see javax.mail.Message#saveChanges() */ @Override public void saveChanges() throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#setContent(javax.mail.Multipart) */ public void setContent(final Multipart content) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#setContent(java.lang.Object, java.lang.String) */ public void setContent(final Object content, final String type) throws MessagingException { setText((String) content); } /* (non-Javadoc) * @see javax.mail.Part#setDataHandler(javax.activation.DataHandler) */ public void setDataHandler(final DataHandler handler) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#setDescription(java.lang.String) */ public void setDescription(final String description) throws MessagingException { _description = description; } /* (non-Javadoc) * @see javax.mail.Part#setDisposition(java.lang.String) */ public void setDisposition(final String disposition) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Part#setFileName(java.lang.String) */ public void setFileName(final String name) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Message#setFlags(javax.mail.Flags, boolean) */ @Override public void setFlags(final Flags flags, final boolean set) throws MessagingException { if (set) { _flags.add(flags); } else { _flags.remove(flags); } } /* (non-Javadoc) * @see javax.mail.Message#setFrom() */ @Override public void setFrom() throws MessagingException { setFrom(new InternetAddress("root@localhost")); } /* (non-Javadoc) * @see javax.mail.Message#setFrom(javax.mail.Address) */ @Override public void setFrom(final Address address) throws MessagingException { _from.clear(); _from.add(address); } /* (non-Javadoc) * @see javax.mail.Part#setHeader(java.lang.String, java.lang.String) */ public void setHeader(final String name, final String value) throws MessagingException { throw new UnsupportedOperationException("Method not implemented"); } /* (non-Javadoc) * @see javax.mail.Message#setRecipients(javax.mail.Message.RecipientType, javax.mail.Address[]) */ @Override public void setRecipients(final RecipientType type, final Address[] addresses) throws MessagingException { final List list = getList(type); list.clear(); list.addAll(Arrays.asList(addresses)); } /* (non-Javadoc) * @see javax.mail.Message#setSentDate(java.util.Date) */ @Override public void setSentDate(final Date sent) throws MessagingException { _sent = sent; } /* (non-Javadoc) * @see javax.mail.Message#setSubject(java.lang.String) */ @Override public void setSubject(final String subject) throws MessagingException { _subject = subject; } /* (non-Javadoc) * @see javax.mail.Part#setText(java.lang.String) */ public void setText(final String content) throws MessagingException { _text = content; } /* (non-Javadoc) * @see javax.mail.Part#writeTo(java.io.OutputStream) */ public void writeTo(final OutputStream out) throws IOException, MessagingException { throw new UnsupportedOperationException("Method not implemented"); } }