001 /** 002 * 003 * Copyright 2003-2006 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package javax.mail.event; 019 020 import javax.mail.Address; 021 import javax.mail.Message; 022 import javax.mail.Transport; 023 024 /** 025 * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $ 026 */ 027 public class TransportEvent extends MailEvent { 028 /** 029 * Indicates that the message has successfully been delivered to all 030 * recipients. 031 */ 032 public static final int MESSAGE_DELIVERED = 1; 033 034 /** 035 * Indicates that no messages could be delivered. 036 */ 037 public static final int MESSAGE_NOT_DELIVERED = 2; 038 039 /** 040 * Indicates that some of the messages were successfully delivered 041 * but that some failed. 042 */ 043 public static final int MESSAGE_PARTIALLY_DELIVERED = 3; 044 045 /** 046 * The event type. 047 */ 048 protected int type; 049 050 /** 051 * Addresses to which the message was successfully delivered. 052 */ 053 protected transient Address[] validSent; 054 055 /** 056 * Addresses which are valid but to which the message was not sent. 057 */ 058 protected transient Address[] validUnsent; 059 060 /** 061 * Addresses that are invalid. 062 */ 063 protected transient Address[] invalid; 064 065 /** 066 * The message associated with this event. 067 */ 068 protected transient Message msg; 069 070 /** 071 * Construct a new event, 072 * 073 * @param transport the transport attempting to deliver the message 074 * @param type the event type 075 * @param validSent addresses to which the message was successfully delivered 076 * @param validUnsent addresses which are valid but to which the message was not sent 077 * @param invalid invalid addresses 078 * @param message the associated message 079 */ 080 public TransportEvent(Transport transport, int type, Address[] validSent, Address[] validUnsent, Address[] invalid, Message message) { 081 super(transport); 082 this.type = type; 083 this.validSent = validSent; 084 this.validUnsent = validUnsent; 085 this.invalid = invalid; 086 this.msg = message; 087 } 088 089 public Address[] getValidSentAddresses() { 090 return validSent; 091 } 092 093 public Address[] getValidUnsentAddresses() { 094 return validUnsent; 095 } 096 097 public Address[] getInvalidAddresses() { 098 return invalid; 099 } 100 101 public Message getMessage() { 102 return msg; 103 } 104 105 public int getType() { 106 return type; 107 } 108 109 public void dispatch(Object listener) { 110 TransportListener l = (TransportListener) listener; 111 switch (type) { 112 case MESSAGE_DELIVERED: 113 l.messageDelivered(this); 114 break; 115 case MESSAGE_NOT_DELIVERED: 116 l.messageNotDelivered(this); 117 break; 118 case MESSAGE_PARTIALLY_DELIVERED: 119 l.messagePartiallyDelivered(this); 120 break; 121 default: 122 throw new IllegalArgumentException("Invalid type " + type); 123 } 124 } 125 }