1d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/**************************************************************** 2d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Licensed to the Apache Software Foundation (ASF) under one * 3d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * or more contributor license agreements. See the NOTICE file * 4d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * distributed with this work for additional information * 5d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * regarding copyright ownership. The ASF licenses this file * 6d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * to you under the Apache License, Version 2.0 (the * 7d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "License"); you may not use this file except in compliance * 8d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * with the License. You may obtain a copy of the License at * 9d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * * 10d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * http://www.apache.org/licenses/LICENSE-2.0 * 11d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * * 12d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Unless required by applicable law or agreed to in writing, * 13d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * software distributed under the License is distributed on an * 14d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 15d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * KIND, either express or implied. See the License for the * 16d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * specific language governing permissions and limitations * 17d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * under the License. * 18d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen ****************************************************************/ 19d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 20d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpackage org.apache.james.mime4j.field.address; 21d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 22d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenimport java.util.ArrayList; 23d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 24d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/** 25d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * An immutable, random-access list of Mailbox objects. 26d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * 27d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * 28d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */ 29d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpublic class MailboxList { 30d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 31d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen private ArrayList<Address> mailboxes; 32d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 33d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen /** 34d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * @param mailboxes An ArrayList that contains only Mailbox objects. 35d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * @param dontCopy true iff it is not possible for the mailboxes ArrayList to be modified by someone else. 36d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */ 37d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public MailboxList(ArrayList<Address> mailboxes, boolean dontCopy) { 38d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen if (mailboxes != null) 39d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen this.mailboxes = (dontCopy ? mailboxes : new ArrayList<Address>(mailboxes)); 40d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen else 41d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen this.mailboxes = new ArrayList<Address>(0); 42d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 43d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 44d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen /** 45d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * The number of elements in this list. 46d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */ 47d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public int size() { 48d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen return mailboxes.size(); 49d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 50d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 51d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen /** 52d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Gets an address. 53d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */ 54d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public Mailbox get(int index) { 55d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen if (0 > index || size() <= index) 56d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen throw new IndexOutOfBoundsException(); 57d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen return (Mailbox)mailboxes.get(index); 58d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 59d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 60d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen /** 61d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Dumps a representation of this mailbox list to 62d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * stdout, for debugging purposes. 63d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */ 64d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen public void print() { 65d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen for (int i = 0; i < size(); i++) { 66d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen Mailbox mailbox = get(i); 67d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen System.out.println(mailbox.toString()); 68d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 69d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen } 70d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen 71d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen} 72